Como redefinir a variável $ PATH no Mac OS X?

17

Eu estraguei minha variável de caminho e agora alguns aplicativos executados geram erros dizendo Comando não encontrado (erro 127) para comandos como data e suspensão . Esses comandos funcionam bem quando executados diretamente no shell.

Acho que isso tem algo a ver com uma variável $ PATH malformada e preciso saber como redefini-la. Excluí os arquivos ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc e ~ / .bashrc e ~ / .profile .

Que outros arquivos podem conter meu $ PATH ? Existe alguma maneira mais simples de redefinir o caminho do que cavar na infinidade de arquivos que podem conter meu caminho?

Observe que esse problema de caminho é apenas com meu usuário. Fiz um usuário de teste no meu sistema e o caminho estava bom, de volta ao normal.

UPDATE: Obrigado. Não sei qual dos arquivos excluídos o fez, mas as coisas estão funcionando novamente. Vocês fizeram o que os 'Especialistas' não puderam. E sim, Chris, você estava certo. As personalizações PATH que fiz foram em bash_login. Mas, de alguma forma, funcionou sem eu excluir essas personalizações. Eu acho que pode ter sido porque eu estava usando essa prefpane chamada 'RCEnvironment', e eu havia entrado em um caminho com aspas e: PATH. Não sei se é necessário aspas e não substitui: $ PATH, de modo que provavelmente é a raiz do erro. Eu esqueci que até tinha esse painel!

Neil
fonte
1
/ etc / profile é o local mais provável para definir os valores iniciais para PATH, mas algo afetaria todos os usuários. Também há ~ / .bash_login, que você não listou (embora você já o tenha eliminado).
precisa

Respostas:

19

Se você tiver um arquivo ~ / .MacOSX / environment.plist, verifique se ele fornece um valor PATH padrão.

Se estiver no formato XML (as listas podem estar em vários formatos), você poderá editar com qualquer editor de texto. Verifique plutil -lint ~/.MacOSX/environment.plistse você editá-lo manualmente.

Ou, você pode usar comandos como padrões ou PlistBuddy para fazer modificações controladas nos arquivos plist XML ou formato binário.


Você sempre pode definir seu próprio PATH em qualquer um dos arquivos de inicialização do seu shell.

Coloque algo como o seguinte nos arquivos de inicialização do seu shell ( .bashrc, ou .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Isso substituirá o PATH padrão definido quando o shell for iniciado (o primeiro PATH=não é usado $PATH, portanto, sempre será iniciado apenas com o que você especificar).

Apenas um dos arquivos o 'login' nunca vai ser utilizado (o primeiro que existe e é legível de ~/.bash_profile, ~/.bash_logine ~/.profileserá usado). .profileé para compatibilidade retroativa com outros shells - se você o usar, mantenha-o livre de sintaxe específica para o bash . Se você escolher .bash_loginor .bash_profile(eles são funcionalmente equivalentes, exceto os nomes), use uma linha [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]próxima ao topo para que os shells de login também obtenham as personalizações feitas no seu .bashrc.

Se você deseja que todas as instâncias do bash tenham o mesmo PATH, use .bashrc. Se você costuma modificar interativamente o PATH de um único shell na linha de comando e deseja usar esse PATH modificado em subshells (casos que provavelmente não são muito comuns), coloque as instruções em um dos arquivos de 'login' . Escolha apenas um dos arquivos de login e use-o.

Chris Johnsen
fonte
8

1.Abra seu terminal

2.Você pode primeiro verificar o seu atual $PATH, digite

eco $ PATH

ao terminal

3.Se o $PATHterminal devolvido é o caminho que você deseja, então você é bom; caso contrário, digite

exportar PATH = / usr / bin: / bin: / usr / sbin: / sbin

e digite

toque em ~ / .bash_profile

e digite

abra ~ / .bash_profile

, você encontrará uma abertura EditText, agora digite o caminho que deseja naquele EditText; Por exemplo, digite

CAMINHO = / usr / bin: / bin: / usr / sbin: / sbin

(que é o padrão $PATHpara o mac, considerando que você deseja redefinir o arquivo $PATHpara que você provavelmente deva digitar isso), salve-o e feche o EditText e feche o Terminal.

4.Agora, você já alterou $PATHou redefiniu para o padrão do mac $PATH!

rObOtAndChalie
fonte
2
Eu sinto que há muito acima disso que não tem efeito. Por que você acha que touché necessário? Além disso, como você está fechando o Terminal de qualquer maneira, por que executar a exportlinha de comando, em vez de apenas adicioná-la a ~/.bash_profile(que exporttambém precisa ) e terminar com isso? (Alternativamente, executado source ~/.bash_profilepara aplicar as alterações para a janela actual.)
Arjan
É verdade que algumas delas são redundantes. Salvar qualquer valor PATH em .bash_profile deve fazer.
ThinkCode
1

As rc/profileedições de Chris Johnson mostradas também funcionam bem /etc/profile.

Acabei de anexar:

export PATH="/usr/local/mariadb/bin:$PATH"

no meu /etc/profilearquivo no Mac OS X 10.9 Mavericks para concluir a instalação do MariaDB (que funciona como um ótimo substituto para o MySQL).

zigmoo
fonte