При попытке перезагрузить файл / source ~ / .profile возникает пара проблем.[Это относится к Ubuntu linux - в некоторых случаях детали команд будут другими]
- Вы запускаете это непосредственно в терминале или в скрипте?
- Как вы выполняетеэто в скрипте?
Объявление.1)
Запуск этого непосредственно в терминале означает, что не будет создано подоболочки.Таким образом, вы можете использовать две команды:
source ~/.bash_profile
или
. ~/.bash_profile
В обоих случаях это обновит среду с содержимым файла .profile.
Ad2) Вы можете запустить любой скрипт bash, вызвав
sh myscript.sh
или
. myscript.sh
В первом случае это создаст подоболочку, которая не повлияет на переменные средываша система, и они будут видны только процессу subshell.После завершения команды subshell ни один из экспортов и т. Д. Не будет применен.ЭТО ОБЩАЯ ОШИБКА И ВЫЗЫВАЕТ МНОГО РАЗРАБОТЧИКОВ ПОТЕРЯТЬ МНОГО ВРЕМЕНИ.
Чтобы изменения, примененные в вашем сценарии, оказали влияние на глобальную среду, сценарий должен выполняться с
.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 Удачи!