$ PATH problemas de duplicação

3

Se eu echo $PATH , obtenho o seguinte:

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/local/share/npm/bin:/usr/local/share/python:/opt/X11/bin:/Users/kh/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Isso está no meu arquivo ~ / .zshrc:

export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/local/share/npm/bin:/usr/local/share/python:/opt/X11/bin:$HOME/.rvm/bin:$PATH

Eu tive que adicionar manualmente / usr / local / etc ... na frente deste arquivo porque homebrew estava reclamando.

Eu procurei por todos os arquivos possíveis (eu sei) para encontrar onde o $ PATH está sendo construído. Mas sem sucesso. Estes são

~/.bash_profile
~/.bashrc
~/.profile

Alguma sugestão.

    
por showFocus 09.06.2013 / 20:17

4 respostas

1

Não sei qual outro arquivo está definindo seu $PATH , mas as entradas duplicadas são

/opt/X11/bin
/usr/bin
/usr/local/bin
/usr/sbin

Tudo isso está definido no seu ~/.zshrc , então tudo que você precisa fazer não é defini-los lá. Em qualquer caso, todos devem estar no padrão $PATH e não há necessidade de adicioná-los. A maioria dos sistemas vem com um $PATH padrão que incluirá esses diretórios, adições feitas nos arquivos ~/.zshrc dos usuários devem apenas adicionar diretórios não padrão.

Altere sua declaração $PATH para

export PATH=/usr/local/sbin:/usr/local/share/npm/bin:/usr/local/share/python:$HOME/.rvm/bin:$PATH

    
por 09.06.2013 / 21:10
1

Os caminhos padrão são definidos em /etc/paths no OSX. Como um subprocesso herda variáveis de ambiente e você define explicitamente /usr/bin/ em seu $PATH , você tem entradas duplicadas.

Para remover as entradas duplicadas, você pode usar:

typeset -U PATH
    
por 09.06.2013 / 22:31
0

De acordo com a página de manual do ZSH :

STARTUP/SHUTDOWN FILES

Commands are first read from /etc/zshenv; this cannot be overridden. Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the former affects all startup files, while the second only affects global startup files (those shown here with an path starting with a /). If one of the options is unset at any point, any subsequent startup file(s) of the corresponding type will not be read. It is also possible for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and GLOBAL_RCS are set by default.

Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zprofile. Then, if the shell is interactive, commands are read from /etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is a login shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.

Assim, você pode querer verificar:

/etc/zshenv
/etc/zshrc
/etc/zlogin

e qualquer arquivo que eles acessem. Como você é o OS X, é provável que você encontre algo como:

if [ -x /usr/libexec/path_helper ]; then
eval '/usr/libexec/path_helper -s'
fi

que, de acordo com a página man path_helper , também irá procurar em:

/etc/paths
/etc/paths.d/*
    
por 09.06.2013 / 20:37
-1

Você pode definir caminhos adicionais para o PATH usando a seguinte sintaxe:

PATH=$PATH:/additonally_location

Então, acho que o PATH não é duplicado.

    
por 09.06.2013 / 20:23