Estou aprendendo a compilar usando seuCompilando EasyHowToguia. Mas assim que executo o comando mostrado abaixo no terminal, aparece o seguinte erro:
tejas@tejas-AU909AA-ACJ-CQ3120IX:~$ sudo chown $tejas /usr/local/src
chown: missing operand after ‘/usr/local/src’
Alguma ideia de como superar esse problema?
Responder1
Você não precisa substituir $USER
pelo seu próprio nome de login de sessão (tejas), pois esta variável já contém "tejas".
Portanto, o comando certo a ser usado é:
sudo chown $USER /usr/local/src
As variáveis $ENV
, $LOGNAME
, $MAIL
, $TERM
, $USER
e $USERNAME
não são internas do Bash. No entanto, elas são frequentemente definidas como variáveis ambientais em um dos arquivos Bash ou de inicialização de login.
Responder2
Enquantovocê não precisasubstitua manualmente seu nome de usuário por $USER
, você pode, se quiser. Você apenas tem que colocá-lono lugar dea "palavra" inteira $USER
, não apenas USER
. Ou seja, deixe de lado o $
que você escreve:
sudo chown tejas /usr/local/src
Isso ocorre porque $
antes de um "nome" significar, ele é o nome de uma variável e que a variável deve ser desreferenciada - isto é, substituída pelo valor armazenado nela. USER
é uma variável de ambiente que contém seu nome de usuário.
Em contraste, tejas
(provavelmente) não está definido (no sentido de ser uma variável à qual foi atribuído algum valor). Em um shell, uma variável que não está definida é tratada, em muitos aspectos, como se estivesse vazia - ou seja, mantendo a sequência de texto vazia (ou seja, de comprimento zero). Então$tejas
é substituído pornadae o comando que realmente é executado é o sudo chown /usr/local/src
, que não funciona.