Como posso redefinir o valor padrão do $ PATH no Ubuntu?

31

Desmarquei acidentalmente todos os diretórios $PATHenquanto tentava adicionar um novo ~/.bashrc. Abri uma nova janela do terminal enquanto estava editando e agora $PATHestá vazia. Estou preocupado se inicializar a partir de outra unidade para descobrir $PATHque não poderei inicializá-la novamente.

Basicamente, qual é o resultado padrão echo $PATH?

Cee
fonte
1
Comente ou corrija essa linha de exportação e você deve sair.
Pantera
~/.bashrcé o lugar errado para definir variáveis ​​de ambiente. Você deve fazer isso em seu ~/.profilelugar.
Geirha # 16/12
Sim, eu descobri. PATH ainda está bom na outra janela do terminal que estava aberta antes da nova, portanto, apenas conserte a linha de exportação adicionando :$PATHno final a restauração do PATH. E sim em ~/.profileque há código para "set PATH assim que inclui bin privada do usuário se ele existe", isto é$HOME/bin
Cee

Respostas:

35

A resposta para sua pergunta é:

PATH=$(getconf PATH)

e funciona em qualquer sistema compatível com POSIX. A resposta selecionada é a maneira correta de aumentar o caminho sem eliminar o conteúdo existente anterior. Se você usa o bash, considere:

PATH+=:$mynewdir
Bruce
fonte
Eu tive problemas ao usar muitos comandos ( sed: No such file or directorytipo de problema) depois de configurar acidentalmente meu PATH para nada durante um processo de execução muito longo (ou seja, não consegui reiniciar). Eu não poderia usar getconf. Para redefinir meu caminho, eu usei $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths"). Para os curiosos: /etc/environmenté onde a variável PATH é definida inicialmente em muitos tipos de Linux.
Nick Touro
2
Esse trabalho me surpreenderia. Talvez "exporte" sem o material "$ (...)" circundante, mas será o que estiver lá. Use "source / etc / ..". De qualquer forma, tente "/ usr / bin / getconf" se você não conseguir encontrar "getconf".
Bruce
Prefira sua idéia final usando o caminho completo muito mais do que o meu em retrospectiva! Obrigado pela resposta
Nick Bull
1
Se a variável PATH estiver vazia, PATH=$(getconf PATH)não será útil, mas apenas resultará embash: getconf: No such file or directory
Max N
1
Se PATH estiver vazio, observe o comentário acima: tente "/ usr / bin / getconf". Se isso não funcionar, você precisará saber onde seu sistema esconde seus comandos POSIX e usar esse diretório.
Bruce
17

Você pode encontrá-lo em / etc / environment:

$ /usr/bin/cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Então, basta fonte:

$ source /etc/environment 
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Manuel Jesus Rodriguez
fonte
1
gato não vai funcionar no modo como em sua resposta, já que não existe $ PATH
Josef Klimuk
Você está certo. Acabei de modificar a resposta. Obrigado!
Manuel Jesus Rodriguez
8

A adição de: $ PATH ao final da linha de exportação corrigiu o problema, por exemplo export PATH=<directory to be added>:$PATH

Eu adiciono esta linha ao ~/.bash_rcarquivo em vez do ~/.profilearquivo para que eu possa ver o efeito imediatamente em um novo terminal e por outros motivos com base nas informações aqui: https://superuser.com/questions/176404/linux-bash-not- loading-profile-in-new-session

Para mim, a saída padrão de echo $PATHantes de adicionar o novo diretório é:

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games

Cee
fonte
3

O caminho padrão é

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

Espero que isso ajude você

Vibhav Pant
fonte
Isso difere do meu PATH padrão. Ver abaixo.
Cee