Пара проблем возникает при попытке перезагрузить/исходный файл ~/.profile. [Это относится к Ubuntu Linux — в некоторых случаях детали команд могут отличаться]
- Вы запускаете это прямо в терминале или в скрипте?
- Как запустить это в скрипте?
Ad. 1)
Запуск этого непосредственно в терминале означает, что подоболочка не будет создана. Таким образом, вы можете использовать две команды:
source ~/.bash_profile
or
. ~/.bash_profile
В обоих случаях это обновит среду содержимым файла .profile.
Объявление 2) Вы можете запустить любой скрипт bash, позвонив
sh myscript.sh
or
. myscript.sh
В первом случае будет создана подоболочка, которая не повлияет на переменные среды вашей системы и будет видна только процессу подоболочки. После завершения команды подоболочки ни один из экспортов и т.п. применяться не будет. ЭТО РАСПРОСТРАНЕННАЯ ОШИБКА, ИЗ-ЗА которой МНОГИЕ РАЗРАБОТЧИКИ ТЕРЯЮТ МНОГО ВРЕМЕНИ.
Чтобы ваши изменения, примененные в вашем скрипте, вступили в силу для глобальной среды, скрипт должен быть запущен с
.myscript.sh
команда.
Чтобы убедиться, что ваш скрипт не запускается в подоболочке, вы можете использовать эту функцию. (опять же пример для оболочки Ubuntu)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
Я надеюсь, что это устраняет некоторые из распространенных недоразумений! :D Удачи!
person
twboc
schedule
23.10.2017