При попытке перезагрузить файл / source ~ / .profile возникает пара проблем. [Это относится к Ubuntu linux - в некоторых случаях детали команд будут другими]
- Вы запускаете это прямо в терминале или в скрипте?
- Как это запустить в скрипте?
Объявление. 1)
Запуск этого прямо в терминале означает, что подоболочка не будет создана. Таким образом, вы можете использовать две команды:
source ~/.bash_profile
или
. ~/.bash_profile
В обоих случаях это обновит среду содержимым файла .profile.
Объявление 2) Вы можете запустить любой сценарий bash, позвонив
sh myscript.sh
или
. 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 Удачи!