Я создал файл env.sh, содержимое которого приведено ниже.
#!/bin/sh
export M2_HOME=/vagrant/tools/maven
export PATH=$PATH:$M2_HOME/bin
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_65
export ANT_HOME=/usr/local/apache-ant-1.9.7
export MAVEN_HOME=$M2_HOME
но выполнение этого sh-файла не приводит к экспорту переменных env. Приходится вручную выполнять каждую строку, чтобы экспортировать их. Пожалуйста, помогите
решение1
Вам нужно source
( .
) файл, а не выполнять:
. env.sh
При запуске скрипта он запускается в подоболочке, и все экспортированные параметры выйдут из области действия после завершения (до)оболочки, не влияя на родительскую оболочку.
Когда вы source
это сделаете, параметры будут доступны в вызывающем сеансе. А также в дочерних процессах, когда вы export
их вызываете.
Обратите внимание, что системная оболочка по умолчанию ( sh
) для Ubuntu — это dash
, а не , bash
и gnome-terminal
запускается bash
как интерактивная оболочка. Во время выполнения убедитесь, что shebang правильный и желаемый. Также во время source
-ing, shebang не нужен, вы можете его удалить.