Я новичок в написании сценариев оболочки bash и столкнулся с проблемой. Я знаю, что могу перезагрузить файл ".profile", просто выполнив:
. .profile
но я пытаюсь выполнить то же самое в сценарии bash, который пишу, и он просто не работает. Любые идеи? Что еще я могу пояснить?
Спасибо
bash
shell
unix
.bash-profile
Амир Рустамзаде
источник
источник
Ответы:
Попробуйте перезагрузить текущую оболочку:
источник
source
команды запустит файл как скрипт ... В худшем случае, если кто-то будет использовать присвоение переменной, какMyVar="$foo$MyVar"
в своем bash_profile, тоsource ~/.profile
даст конечный результатMyVar="$foo$MyVar$MyVar"
, следовательно,$MyVar
впоследствии будет иметь неправильное значение. (Независимо от плохой практики, просто попросите альтернативное решение)Попробуй это:
источник
При попытке перезагрузить файл / source ~ / .profile возникает пара проблем. [Это относится к Ubuntu linux - в некоторых случаях детали команд будут другими]
Объявление. 1)
Запуск этого прямо в терминале означает, что подоболочка не будет создана. Таким образом, вы можете использовать две команды:
или
В обоих случаях это обновит среду содержимым файла .profile.
Объявление 2) Вы можете запустить любой сценарий bash, позвонив
или
В первом случае это создаст подоболочку, которая не повлияет на переменные среды вашей системы, и они будут видны только процессу подоболочки. После завершения команды подоболочки ни один из экспортов и т. Д. Не будет применен. ЭТО РАСПРОСТРАНЕННАЯ ОШИБКА, ВЫЗЫВАЮЩАЯ МНОГО РАЗРАБОТЧИКОВ ТЕРЯТЬ МНОГО ВРЕМЕНИ.
Чтобы ваши изменения, примененные в вашем скрипте, повлияли на глобальную среду, скрипт должен быть запущен с
команда.
Чтобы убедиться, что ваш сценарий не запускается в подсистеме, вы можете использовать эту функцию. (Снова пример для оболочки Ubuntu)
Я надеюсь, что это устранит некоторые из распространенных недоразумений! : D Удачи!
источник
Сценарий bash запускается в отдельной подоболочке. Чтобы выполнить эту работу, вам также потребуется исходный код этого другого скрипта.
источник
.profile
файла примерно так:. $HOME/.profile
и вам нужно будет запустить свой скрипт с его источника. Что-то вроде. /path/to/yourscript
Пытаться:
источник