A variável de ambiente está definida, mas não acessível no servidor

1

Eu tenho um programa Java que acessa alguns arquivos de propriedades para que ele trabalhe através de um caminho que é definido como uma variável de ambiente. Eu defino o caminho usando o comando de exportação. O arquivo jar do Java, que é o executável, é colocado sob um usuário diferente e, portanto, eu uso a opção sudo para executar o arquivo jar .

Meu problema é que, quando eu configuro a variável de ambiente em um servidor de teste, o programa roda bem, no entanto, quando faço as mesmas configurações em um servidor de produção e tento executá-lo, ele mostra que o caminho está definido variável de ambiente é nula.

Eu sei que isso tem algo a ver com o acesso ou talvez diferentes configurações de servidor, mas como sou novo no UNIX, não tenho certeza de onde posso começar a investigar.

Alguém por favor pode ajudar?

    
por Tanmay Patwardhan 07.11.2012 / 19:43

2 respostas

1

As variáveis de ambiente para um usuário podem ser definidas em ~ / .profile, entretanto, como você está executando alguns comandos como root, isso não funcionará, a menos que você também altere o arquivo .profile.

Outra opção é alterar o arquivo / etc / profile para adicionar os caminhos e isso deve funcionar para todos os usuários.

    
por fabricator4 07.11.2012 / 20:34
0

Locais para verificar variáveis de ambiente

/etc/environment
/etc/profile
~/.profile
~/.bashrc

Se você exportar uma variável como userA e, em seguida, iniciar o jar usando sudo, essa variável não será copiada para o ambiente do userA.

Uma solução rápida é executar o comando como:

PATH=$PATH:/your/directory asdf.jar

Isso irá definir o PATH apenas para esta invocação do seu arquivo jar.

Você também pode verificar como é o ambiente desse programa obtendo seu pid e executando cat /proc/<pid>/environ

Isso mostrará todas as variáveis de ambiente disponíveis para o seu programa.

    
por Marcin Kaminski 08.11.2012 / 02:29