Defina variáveis de ambiente (por exemplo, $ PATH) no início do script - Não se aplica a todos os programas

0

Eu devo estar ignorando algo, mas eu tentei várias maneiras de fazer isso funcionar.

Estou trabalhando em um super computador sem direitos de administrador. Eu preciso usar uma versão java específica para um programa em particular, mas eu não quero fazer disso o java padrão para tudo.

Medidas tomadas: Eu baixei o jre apropriado e adicionei as seguintes linhas no início do meu script:

export PATH="/path/to/jre/bin/:$PATH"
export JAVA_HOME="/path/to/jre"
echo $PATH
echo ""
echo $JAVA_HOME

Eu obtenho os caminhos apropriados quando faço eco durante o script e, como esperado, $ PATH e $ JAVA_HOME retornam aos valores originais depois que o script é concluído. O problema é que os programas chamados durante o script não estão usando o java que eu preciso deles (e, portanto, falha na versão java incorreta). Se eu executar os mesmos comandos de exportação no shell antes de executar o script, os programas serão executados conforme o esperado.

Eu também não tenho controle sobre como o java é chamado porque estou usando um programa ( PBcR ) que chama uma série de outros programas. Aqui está a única ligação no meu script:

/path/to/bin/PBcR \
-length 500 \
-partitions 200 \
-l lambda \
-s pacbio.spec \
-fastq pacbio.filtered_subreads.fastq \
genomeSize=50000

Perguntas:

  1. Por que nem todos os programas em execução durante o script usam o $ PATH e o $ JAVA_HOME que exportamos durante o script?
  2. Como posso obter todos os programas chamados durante o script para usar as variáveis de ambiente corretas?

Eu também tentei colocar os comandos export em um arquivo separado e chamar source nesse arquivo, mas isso não parece mudar nada.

Eu realmente aprecio sua ajuda.

em execução no CentOS 6.6; shell bash;

    
por Mark Ebbert 18.12.2015 / 08:20

2 respostas

0

Não sei por que eles não estão funcionando, mas é assim que um arquivo jar é agendado em um dos meus servidores:

/path/to/jre/bin/java -jar yourjavaprogram.jar
    
por 18.12.2015 / 09:49
0

Acabou sendo um erro bobo. Eu estava definindo meu $ PATH e $ JAVA_HOME usando ~ em vez de um caminho completo (por exemplo, ~/path/to/java em vez de /path/to/java , como coloquei na minha pergunta original). Eu obviamente ignorei esse detalhe "menor" ao postar minha pergunta original.

Ao tentar depurar isso, aprendi que o "programa" que chama java era na verdade um script perl, e o perl não resolve ~ como bash .

Agradeço sua ajuda.

    
por 18.12.2015 / 18:37