Como usar o /etc/paths.d para adicionar arquivos executáveis ​​ao meu caminho?

15

Estou tentando usar o /etc/paths.d para adicionar um executável à minha variável de caminho, mas até agora não tenho sucesso.

O caminho completo do arquivo executável é: /opt/ImageMagick/bin/convert

/etc/paths.d contém dois arquivos: 40-XQuartz e ImageMagick

O 40-XQuartz contém uma linha: /opt/X11/bin
O ImageMagick contém uma linha:/opt/ImageMagick/bin

Meus echo $PATHdá:

/Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Portanto, parece que apenas o primeiro arquivo (40-XQuartz) faz seu trabalho. As permissões dos dois arquivos (40-XQuartz e ImageMagick) são exatamente as mesmas, então minha pergunta é por que o primeiro funciona e o segundo não.

Estou executando o OS X Mavericks.

skiabox
fonte
Qual shell você usa? O que há com / etc / caminhos?
Max Ried
Adicionando rígida para /etc/paths.dobras para mim, mas eu reiniciar qualquer aplicativo de terminal Eu estou usando (ITerm2 no meu caso) para o novo caminho para entrar em vigor
user1256923

Respostas:

17

Você iniciou um novo shell de login desde a adição do novo arquivo para o ImageMagick? A configuração do caminho das paths.dentradas é feita em /etc/profilee /etc/csh.login, portanto, você precisa iniciar um novo shell para que as novas entradas entrem em vigor.

O OS X usa path_helperpara definir o caminho com base nos arquivos /etc/paths.d- você sempre pode chamá-lo manualmente (assumindo um shell semelhante ao Bourne aqui):

$ eval `/usr/libexec/path_helper -s`
mjturner
fonte
É claro que eu iniciei um novo shell. Eu até reiniciei o meu mac.
Skiabox
novo shell de login funcionou para mim
incandescentman
3

Corrida

echo /opt/ImageMagick/bin|sudo tee /etc/paths.d/ImageMagick;bash -l;echo $PATH

adiciona /opt/ImageMagick/binà PATHminha instalação.

Você está substituindo PATHem algum outro lugar como ~/.bash_profile?

Os caminhos em /etc/paths.d/são adicionados ao caminho por /usr/libexec/path_helper, que é executado a partir de /etc/profile, /etc/zsh.enve /etc/csh.login. path_helpernão é executado por aplicativos gráficos ou quando o bash é chamado como um shell que não é de login.

Você também pode definir um padrão PATHem /etc/launchd.conf:

  1. Corra por exemplo setenv PATH /Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin|sudo tee -a /etc/launchd.conf.
  2. Reinicie ou execute launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confe reinicie os processos.

Prefiro alterar o caminho /etc/launchd.conf, porque também afeta os programas que não são iniciados a partir de shells, como editores de texto e programas iniciados por tarefas launchd.

Lri
fonte
0

Incrível, eu estava apenas brincando de adicionar o ImageMagic ao meu Mac. Não só você precisa ImageMagick/binem sua PATH, você também precisa de um conjunto variável de ambiente, ou adicionado a:

Para testar, você pode criá-lo manualmente com:

export DYLD_LIBRARY=".:/opt/ImageMagic/lib"

As informações para definir uma variável de ambiente para o Mac OS podem ser encontradas aqui, Definindo variáveis ​​de ambiente no OS X?

Tony
fonte