Há uma linha na ~/.profile
qual é
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
Não tenho certeza sobre o último i
.
- Devo removê-lo?
- Não é um erro de sintaxe?
bash
environment-variables
Sorrir
fonte
fonte
$PATH
variável de ambiente, mas não são duplicatas. No máximo, eles estão relacionados. Essa questão é um problema no~/.profile
qual, por acaso, é um caractere extra na linha em que o$PATH
ambiente está atribuído.PATH=
linha~/.profile
deve parecer válida - qual é a verdadeira pergunta aqui.Respostas:
Não, não é um erro de sintaxe; é apenas uma letra que é anexada após a expansão de
$PATH
, porque o shell remove aspas ...Assim, além de anexar diretórios locais, ele efetivamente removeu o existente
/snap/bin
do meu PATH e adicionou o inexistente/snap/bini
.Você pode remover o
i
para reparar seu PATH.Para ver a alteração, você precisará efetuar logout e logon novamente ou executar
source ~/.profile
em qualquer shell que estiver usando (ou iniciar o shellbash -l
), porque isso.profile
é lido apenas pelos shells de login .Se você não fez essa alteração por conta
.profile
própria, convém restaurar o arquivo padrão executandoIsso renomeia o antigo
.profile
.profile.old
(você também pode excluir o arquivo, se desejar) e o substitui pela versão padrão para o seu sistema/etc/skel
.fonte
Acho que aqui não está claro o que significa a seguinte expressão:
A primeira parte
PATH=
significa que atribuímos um novo valor à variável (ambiente)$PATH
.A segunda parte é o novo valor dessa variável. No caso atual, a variável
$HOME
será expandida com seu valor atual e a esse valor será anexada a string/bin:
. O mesmo vale para a próxima parte da string$HOME/.local/bin:
. Finalmente, o valor atual (anterior) da$PATH
variável será expandido e anexado. O cólon:
desempenha um papel de delimitador naPATH
expressão.O objetivo é, em última análise a escrever:
PATH=<some additional paths>+<the the current value of $PATH>
. Colocamos esses caminhos adicionais na frente da string, porque queremos que o shell procure executáveis primeiro nesses locais e somente depois em todo o sistema.O personagem
i
é desnecessário. Ele será anexado ao novo valor de$PATH
e fará uma bagunça, como @Zanna explica em sua resposta .fonte
Sim, é um erro de sintaxe, o real
.profile
deve ficar assim, a menos que você tenha mudado as coisas (esta é a versão 17.10, veja as notas abaixo):Isso pode parecer diferente nas versões mais antigas do Ubuntu, onde a verificação se o
bin
diretório de usuários está presente não foi incluída no.profile
. A maneira mais fácil de verificar como deve ser é dar uma olhada/etc/skel/.profile
.Então, para adicionar como você pediu no seu comentário, basta colocá-lo no final do seu arquivo de perfil:
Se você estragar completamente o seu perfil, há uma cópia na qual você pode obter um novo
/etc/skel/
.fonte
/etc/skel/.profile
no 16.04 parece diferente, sem um teste, se"$HOME/bin"
existe. Mesmo que essa fosse uma variante melhor (IMO), parece ter sido alterada em 17.10 - por uma razão ou por engano.