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

5

Quando faço echo de $ PATH, recebo isto: 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 .

Eu quero remover alguns caminhos disso, mas quando eu abro o arquivo usando o comando vim /etc/paths , recebo os seguintes resultados:

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

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

    
por level0 08.04.2017 / 02:10

2 respostas

7

/ etc / paths é parte do que é usado para configurar o $ PATH para os processos do shell. Quando você abre uma nova janela do Terminal, ela inicia bash , que executa vários scripts de inicialização: / etc / profile AND ~ / .bash_profile OU (se isso não existir) ~ / .bash_login OU (se isso não existir ou) ~ / .profile. Esses scripts configuram o ambiente do shell, incluindo $ PATH.

Uma das coisas que o / etc / profile faz é executar / usr / libexec / path_helper, que lê / etc / paths e quaisquer arquivos em /etc/paths.d, e adiciona seu conteúdo a $ PATH. Mas isso é apenas um ponto de partida; seu próprio script de inicialização (se existir algum) pode adicionar ao $ PATH, editá-lo, substituí-lo completamente, etc.

Parece-me que o seu script de inicialização (e / ou coisas que ele executa) está adicionando um número de entradas ao conjunto básico que ele obtém de / etc / paths. "Usuários / 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 procurados primeiro) e ": / Users / mac / Library / Android / sdk / platform-tools: / platform-tools "é adicionado no final. Se você quiser saber exatamente o que está adicionando, você precisa ver o seu script de inicialização.

BTW, este processo para configurar $ PATH só se aplica a shells "login" do bash. Qualquer coisa executada por um shell bash herdará $ PATH dele, então provavelmente terá essencialmente a mesma coisa. Os shells não-login do bash seguem um processo de configuração um pouco diferente. Outros shells, e coisas não iniciadas de um shell (por exemplo, tarefas agendadas) podem ter $ PATHs completamente diferentes.

    
por 08.04.2017 / 08:03
0

Primeiros lugares que eu procuro para verificar se há modificações,

~/.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.

    
por 08.04.2017 / 07:19

Tags