Я написал следующий скрипт для установки некоторых переменных среды, когда это необходимо.
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
Ниже команды и результаты, которые я вижу на своем терминале: скрипт выполняется, но переменные не устанавливаются в конце.
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
В чем дело? Заранее спасибо. Mirko
export
передавать переменные в подоболочки, подоболочка - это копия вашей текущей оболочки, включая переменные и функции и т. Д. Экспортированные переменные копируются в новые процессы, порожденные из оболочки, независимо от того, является ли этот процесс другой оболочкой или нет. Во-вторых,.
это команда POSIX для поиска. Bash добавляет егоsource
как более читаемый синоним, но вы не можете полагаться на то, что он доступен в sh. Наконец,. ./script
вместо того. script
, чтобы избежать неожиданностей. mywiki.wooledge.org/BashFAQ/060