onde o $ PATH obtém seus valores de (osx)?

2

Quando eu digito $ PATH, entre a lista de valores que vejo, alguns são de /etc/paths e /etc/paths.d , mas também há links para estruturas python. De onde ele lê isso?

    
por Anirudh Bandi 22.07.2017 / 06:53

2 respostas

1

Um programa chamado path_helper é executado a partir de vários arquivos /etc/* shell rc por padrão.

$ grep path_helper /etc/* 2>/dev/null
/etc/csh.login:#if ( -x /usr/libexec/path_helper ) then
/etc/csh.login:#    eval '/usr/libexec/path_helper -c'
/etc/profile:#if [ -x /usr/libexec/path_helper ]; then
/etc/profile:#  eval '/usr/libexec/path_helper -s'
/etc/zprofile:#if [ -x /usr/libexec/path_helper ]; then
/etc/zprofile:# eval '/usr/libexec/path_helper -s'
$ 

Isto é obviamente não o padrão; Eu desabilitei path_helper e gerenciei PATH em meus próprios arquivos rc.

    
por 22.07.2017 / 16:48
1

Quando você faz logon no seu computador, o loginwindow.app configura um ambiente básico que inclui $HOME , $SHELL , $TMPDIR , $LOGNAME , $USER e $PATH . O ambiente também pode ser alterado pelos daemons de lançamento ou agente. Ou estendendo a variável PATH em launchd . Normalmente, a variável PATH é definida para a variável PATH codificada no kernel.

sysctl user.cs_path
user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin

Quando você inicia o emulador de terminal, por padrão, ele chamará login - login -pf <yourname> , que configurará apenas as variáveis de ambiente que ainda não foram definidas (consulte man login ).

Seu shell $SHELL lê o arquivo apropriado em /etc que chama path_helper . path_helper pega a variável PATH que já está definida, lê /etc/paths , remove duplicatas no PATH atual e ordena a variável PATH como definida em /etc/paths , depois lê os arquivos dentro de /etc/paths.d adiciona aqueles à variável PATH, e, em seguida, adiciona todos os caminhos que estavam no PATH original que ainda não foram adicionados.

Finalmente, seu $ SHELL lê o arquivo rc apropriado para um shell de login em seu diretório pessoal.

    
por 22.07.2017 / 18:18

Tags