Qual é a diferença entre "echo $PATH" e/etc/paths?

Qual é a diferença entre "echo $PATH" e/etc/paths?

Quando eu echo $PATH eu recebo isso: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools.

Quero remover alguns caminhos disso, mas quando abro o arquivo usando o comando vim /etc/paths, obtenho os seguintes resultados:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

O arquivo /etc/paths é diferente da variável $PATH?

Responder1

/etc/pathsfaz parte do que é usado para configurar $PATHprocessos shell. Quando você abre uma nova janela do Terminal, ele inicia bash, que executa vários scripts de inicialização: /etc/profileAND ~/.bash_profileOR (se não existir) ~/.bash_loginOR (se também não existir) ~/.profile. Esses scripts configuram o ambiente shell, incluindo $PATH.

Uma das coisas /etc/profileque faz é run /usr/libexec/path_helper, que lê /etc/pathstodos os arquivos /etc/paths.de adiciona seu conteúdo ao $PATH. Mas este é apenas um ponto de partida; seu próprio script de inicialização (se existir) pode adicionar $PATH, editar, substituir completamente, etc.

Parece-me que seu script de inicialização (e/ou coisas que ele executa) está adicionando uma série de entradas ao conjunto básico do qual ele obtém /etc/paths. "Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:" é adicionado ao início de $PATH(o que significa que esses diretórios serão pesquisados ​​primeiro) e ":/Users/mac/Library/Android/sdk /platform-tools:/platform-tools" é adicionado no final. Se você quiser saber exatamente o que os está adicionando, você precisa dar uma olhada no seu script de inicialização.

A propósito, este processo de configuração $PATHse aplica apenas aos shells de "login" do bash. Qualquer coisa executada por um shell bash herdará $PATHdele, então provavelmente terá essencialmente a mesma coisa. Os shells bash sem login seguem um processo de configuração um pouco diferente. Outros shells e coisas que não foram iniciadas a partir de um shell (por exemplo, cron jobs) podem ter arquivos $PATHs.

Responder2

Os primeiros lugares que procuraria para verificar se há modificações são,

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

Se você estiver usando algo que não seja Bash, verifique os arquivos de configuração para ver qualquer menção ao PATH.

informação relacionada