Variável env PATH no Mac OS X e / ou Eclipse

17

Quando imprimo o caminho no bash, ele imprime o seguinte:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Quando executo System.out.println (System.getenv ("PATH")); em Java executando sob Eclipse, ele imprime

/usr/bin:/bin:/usr/sbin:/sbin

Como posso descobrir por que existe essa discrepância? Preciso adicionar / usr / local / bin ao PATH e disponibilizá-lo para aplicativos Java no Eclipse. (observação: não fiz modificações nos caminhos do sistema, portanto, esses são os padrões definidos pelo sistema operacional ou talvez por um ou mais dos aplicativos que instalei.)

Jason S
fonte

Respostas:

10

Se você deseja definir um sistema variável em todo o OSX, é necessário colocá-lo no seu arquivo ~ / .MacOSX / environment.plist.

Consulte esta página no site da apple para obter mais detalhes.

Ted Naleid
fonte
1
Infelizmente, isso não parece funcionar para mim.
thSoft
9

Para aqueles que procuram uma resposta anos depois (Neon, Oxigênio):

Algumas das minhas ferramentas de nó e angular / angular2 no eclipse falharam devido à falta de entradas $ PATH no terminal MacOS. Suas ferramentas utilizam o terminal eclipse incorporado, que não começa a fornecer seu shell de login / usuário. Portanto, você precisa definir o terminal eclipse em suas preferências do eclipse para iniciar como --login shell, a fim de compreender as configurações PATH dos usuários:

Vamos para:

Preferences -> Terminal -> Local Terminal

E definir

Arguments para: --login

abra um novo terminal dentro do Eclipse e o $ PATH do usuário deve ser usado a partir de agora. Além disso, tudo o que você configurou em ~ / .bash_profile será executado ao abrir um novo Terminal no Eclipse.

Martin Peter
fonte
A melhor solução, resolve o problema apenas alterando a configuração do eclipse na GUI.
PXel #
Essa resposta me fez atualizar para o oxigênio, e isso era tudo que eu precisava para fazê-lo funcionar.
John John
Não tenho o submenu "Terminal" no Eclipse com a sequência de versões "2019-06 (4.12.0)".
tsj 6/09
8

Teve o mesmo problema. Aqui está a minha solução:

  1. Edite o /etc/pathsarquivo para incluir o caminho adicional desejado.

  2. Para uma instalação OSX, não execute/Applications/eclipse/eclipse /Applications/eclipse/Eclipse.app

user150161
fonte
1
omg número 2 aqui foi a solução para tanta frustração. Obrigado!!
Tommy
1
Registrei-me neste site apenas para poder votar novamente esta resposta - o item 2 foi corrigido!
Iftah 06/07
Onde posso encontrar os caminhos etc /?
João
1
@John /etc/pathsé o caminho completo do arquivo. Você pode fazer Cmd + Shift + G e colocar "/ etc" nele e pressionar Enter / Return. Você deve encontrar o arquivo chamado "caminhos".
Sufian
6

Ah, encontrei esta página que diz

Nota: O Mac OS X não inclui / usr / local / bin em seu PATH padrão. Portanto, supondo que você esteja usando o shell bash padrão, digite (ou inclua no / etc / profile) export PATH = / usr / local / bin: $ PATH antes de usar qualquer uma dessas ferramentas.

Isso é uma coisa apropriada / inapropriada? Fico desconfiado de editar arquivos do sistema, a menos que saiba realmente o que estou fazendo. / usr / local / bin é gravável apenas pela raiz, portanto, eu não abriria uma brecha na segurança, estaria?


Estranho, eu adicionei o caminho de exportação e ele não tem efeito no eclipse executado no Dock. Também encontrei esta página sobre caminhos e meu arquivo / etc / caminhos tem

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

e, no entanto, esses caminhos não aparecem no eclipse ... existe uma maneira fácil de criar / encontrar um arquivo binário que imprima $ PATH, que eu poderia executar no Dock, para depurar isso mais facilmente? Não sei se o Eclipse anda pelo caminho.

Jason S
fonte
2
+1 na sua pergunta final. Eu estou querendo saber como diagnosticar problemas de caminho no OS X não no bash ou no Terminal.
fideli 21/01
Nota para futuros Googlers: a Apple agora inclui a /usr/local/binprimeira nos usuários $PATH. (Veja aqui .)
Telêmaco
4

Se você estiver no Eclipse (testado com "Mars"), poderá alterar sua "Configuração de Execução":

  1. Clique em "Executar" → "Executar configurações ..."
  2. Escolha a configuração de execução apropriada à esquerda
  3. Agora escolha a aba "Ambiente"
  4. Clique em "Novo ..."
  5. No campo "Nome", digite "PATH"
  6. Agora vá ao seu terminal, digite "echo $ PATH" e copie o resultado
  7. Após o resultado no campo "Valor"
  8. Clique em "OK"
  9. De volta à guia "Ambiente", certifique-se de selecionar "Anexar ambiente ao ambiente nativo"

Agora, o Eclipse usa os mesmos valores para a variável de ambiente PATH que o seu sistema. Lembre-se: Isso é válido apenas para a configuração de execução que você escolheu.

Como já observado na sua pergunta, verifique em Java com:

System.getenv();
Mike
fonte
2

Provavelmente, um dos seus scripts de login do bash ( .bashrcou .bash_profile) está mudando $PATH. Se você iniciar o Eclipse a partir do terminal, ele entrará /usr/local/binem seu caminho?

derobert
fonte
1
boa decisão! Se eu executar o Eclipse no terminal, ele terá / usr / local / bin no caminho. Agora o que devo fazer? / Usr / local / bin não é algo que deve estar no caminho para todos os aplicativos? em qual script posso colocar isso, para que, se eu executar o Eclipse no Finder ou no Dock, ele esteja no caminho?
23610 Jason S
1
Também não tenho um .bashrc ou .bash_profile no meu diretório de usuários.
23610 Jason S
2

Esta dica acima funciona para mim: 1) adicione o caminho ao / etc / caminhos como raiz 2) inicie o eclipse com $ ECL_HOME / Eclipse.app / Contents / MacOS / eclipse em vez de $ ECL_HOME / Eclipse.app

Kathy
fonte
Este funciona para mim, muito obrigado! No meu caso, o caminho para executar o Eclipse é /Applications/Eclipse.app/Contents/MacOS/eclipse
Tsung-Ting Kuo
2

Como alternativa, você pode apenas adicionar um link simbólico ao seu /usr/localdiretório apontando para o seu aplicativo.

Por exemplo, faça o seguinte root:

ln -s /Applications/PhantomJS/phantomjs-1.9.2-macosx/bin/phantomjs / usr / local / phantomjs

Isso me ajudou a executar (mvn test) o aplicativo PhantomJS externo de um projeto Maven no Eclipse.

punhal
fonte
Parece que isso não tem nada a ver com $PATHdiretórios do $PATHtipo /usr/local/bin. Poderia explicar em mais detalhes?
Pabouk
você coloca um link simbólico em algum lugar do caminho, que aponta para o local real que não está no caminho. Já fiz isso antes, ele funciona para executáveis individuais, não funciona para um diretório cheio de arquivos
Jason S
1

Eclipse NEON, mac OS X 10.11.6
O terminal no Eclipse não pode usar o mvncomando (eu faço um link suave de mvnin /usr/local/bin)

Solução temporária:

Clique com o botão direito do mouse /Applications/eclipse-> mostrar o conteúdo do pacote -> conteúdo -> MacOS -> clique duas vezes eclipsepara iniciar.

Inicie o Eclipse dessa maneira, o Eclipse pode detectar todas as configurações de caminho e, em seguida, eu posso usar o mvncomando no terminal Eclipse agora.

Você pode clicar com o botão direito eclipsenessa pasta e criar um alias para iniciá-lo de maneira conveniente.

Não sei por que agora. Eu acho que este deve ser um erro de eclipse.

bluearrow
fonte
0

edite o ~/.bash_profilepara incluir o caminho

em vez de iniciar na barra de ativação,

abra o terminal e inicie-o como

/Applications/Eclipse.app/Contents/MacOS/eclipse

Isso fez o truque para mim.

Vince C
fonte
0

Reunindo algumas respostas e atualizando para algo fácil:

  1. Clique com o botão direito do mouse em Eclipse.app e escolha "Mostrar Conteúdo do Pacote"
  2. Navegue para Conteúdo / MacOS para encontrar "eclipse".
  3. Clique com o botão direito e escolha "Criar alias" ou arraste e solte-o enquanto mantém pressionado o comando e a opção.
  4. Coloque o alias em algum lugar conveniente, como em Aplicativos.
  5. Clique duas vezes para iniciar.
  6. Não há etapa 6!

Isso não apenas abrirá uma útil janela do Terminal, mostrando a saída bruta do Eclipse, como adotará automaticamente o caminho que você definiu no shell de login.

Assim você pode usar qualquer um dos métodos normais para definir o seu caminho (editar /etc/pathsou ~/.bash_profileou apenas instalar ferramenta de linha de comando bem comportado como mbed), e não se preocupe mais. Se você pode chamá-lo no Terminal, o Eclipse também pode chamá-lo.

Heath Raftery
fonte