Должно быть, я что-то упускаю, но я попробовал несколько способов заставить это работать.
Я работаю на суперкомпьютере без прав администратора. Мне нужно использовать конкретную версию Java для конкретной программы, но я не хочу делать это Java по умолчанию для всего.
Предпринятые шаги: я скачал соответствующий jre и добавил следующие строки в начале моего сценария:
export PATH="/path/to/jre/bin/:$PATH"
export JAVA_HOME="/path/to/jre"
echo $PATH
echo ""
echo $JAVA_HOME
Я получаю соответствующие пути, когда я эхо во время сценария, и, как и ожидалось, $ PATH и $ JAVA_HOME возвращаются к исходным значениям после завершения сценария. Проблема в том, что программы, вызываемые во время сценария, не используют Java, в котором они мне нужны (и, следовательно, приводят к сбою в неверной версии Java). Если я запускаю те же команды экспорта в оболочке перед запуском сценария, программы запускаются, как и ожидалось.
У меня также нет контроля над тем, как вызывается Java, потому что я использую программу (PBcR
), которая вызывает ряд других программ. Вот единственный вызов в моем скрипте:
/path/to/bin/PBcR \
-length 500 \
-partitions 200 \
-l lambda \
-s pacbio.spec \
-fastq pacbio.filtered_subreads.fastq \
genomeSize=50000
Вопросы:
- Почему не все программы, работающие во время скрипта, используют $ PATH и $ JAVA_HOME, которые я экспортирую во время скрипта?
- Как я могу заставить все программы, вызываемые во время сценария, использовать правильные переменные среды?
Я также попытался поместить команды export
в отдельный файл и вызвать source
для этого файла, но, похоже, это ничего не меняет.
Я действительно ценю твою помощь.
Работает на CentOS 6.6; оболочка bash;