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