Quando eu echo $ PATH fico com esta: 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 / caminhos é diferente da variável $ PATH?
/etc/paths
na minha, mas eu estou correndo10.4.11
e as coisas provavelmente mudaram desde então/etc/paths
é usado para gerar o padrão$PATH
, que você pode modificar posteriormente~/.bashrc
ou~/.profile
Respostas:
/etc/paths
faz parte do que é usado para configurar$PATH
processos de shell. Quando você abre uma nova janela do Terminal, ela iniciabash
, executando vários scripts de inicialização:/etc/profile
AND~/.bash_profile
OR (se isso não existir)~/.bash_login
OR (se isso também não existir)~/.profile
. Esses scripts configuram o ambiente do shell, inclusive$PATH
.Uma das coisas que
/etc/profile
faz é executar/usr/libexec/path_helper
, que lê/etc/paths
todos os arquivos/etc/paths.d
e adiciona seu conteúdo$PATH
. Mas este é apenas um ponto de partida; seu próprio script de inicialização (se houver algum) pode adicionar$PATH
, editar, substituir completamente etc.Parece-me que seu script de inicialização (e / ou coisas que ele executa) está adicionando um número de entradas ao conjunto básico de onde ele recebe
/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, verifique o script de inicialização.BTW, esse processo de configuração se
$PATH
aplica somente aos shells "login" do bash. Qualquer coisa executada por um shell bash será herdada$PATH
dele, portanto, 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, tarefas cron) podem ser completamente diferentes$PATHs
.fonte
/usr/local/bin/bash
como instalado porbrew
, sem o-l
argumento),/usr/libexec/path_helper
não é usado e/usr/local/bin
não é incluído por padrão no$PATH
. Para usarpath_helper
em um script ou interativamente, o comando éeval $(/usr/libexec/path_helper)
.Os primeiros lugares que eu procuraria para verificar modificações são:
Se você estiver usando algo que não é o Bash, verifique os arquivos de configuração para ver qualquer menção ao PATH.
fonte