Qual é a seqüência de carregamentos bash de arquivos para definir a variável PATH

1

Eu quero entender como a variável PATH é definida no Linux / Mac. O que todos os arquivos são carregados e em que seqüência para definir a variável PATH para BASH.

    
por Manohar Negi 12.06.2014 / 10:02

2 respostas

1

O PATH pode ser um pouco complicado, já que seus arquivos de configuração podem fazer coisas como PATH="~/bin:${PATH}" ou PATH="${PATH}:~/bin" e ambos são perfeitamente aceitáveis e têm usos situacionais válidos. Eu acredito que o que você está realmente perguntando é quais arquivos de configuração o shell lê na inicialização - determinar como o seu PATH é atribuído é uma função de passar pelos arquivos de configuração em ordem e ver o que eles fazem.

No OS X, os seguintes arquivos de configuração são lidos nesta ordem:

Para shells de login interativo:
* /etc/profile
* Primeiro correspondido na ordem de: ~/.bash_profile , ~/.bash_login , ~/.profile
* No término do shell: ~/.bash_logout

Para shells não-login interativos:
* /private/etc/bashrc (geralmente /etc/bash.bashrc no Linux)
* ~/.bashrc

    
por 15.06.2014 / 15:49
1

Para elaborar um pouco sobre o que o devnall explicou muito bem para shells interativos: WRT OS X 10.10 (Yosemite) e talvez antes, /etc/profile chamará /usr/libexec/path_helper se esse arquivo estiver disponível e executável. path_helper lerá cada arquivo em /etc/paths.d/ e anexará o conteúdo (que deve ser uma única linha a cada) a $PATH e exportará o resultado inteiro. Isso é uma forma simples e clara de indicar por que um determinado caminho está definido:

$ cat /etc/paths.d/40-XQuartz 
    /opt/X11/bin
$ cat /etc/paths.d/MacGPG2 
    /usr/local/MacGPG2/bin

Então, se houver um /etc/bashrc , isso será chamado.

Em seguida, um dos perfis .bash, .bash_login ou .profile no diretório inicial é executado. (E, claro, ~/.bash_logout ao sair.)

    
por 14.01.2015 / 03:22