Переменные в командных сценариях обычно резервируются для использования из самого скрипта, за исключением случаев, когда они явным образом экспортируются в качестве переменных среды. Переменные среды, к числу которых относится, например, переменная spath, представляют собой переменные, доступные всем командным сценариям и программам, в отличие от переменных оболочки, которые доступны только в пределах вашего скрипта.
Установка переменной очень проста. Для этого достаточно создать ее имя и задать для переменной значение, например: aVariable=Value.
Примечание
Переменным можно присваивать имена любой длины, однако существует ряд общепринятых правил. Во-первых, хотя имя может состоять из букв, цифр и символов подчеркивания, лучше всего начинать их с буквы. Во-вторых, имена переменных не могут начинаться с цифры, так как имена, начинающиеся с цифр, зарезервированы для аргументов командной строки. Кроме того, переменные не могут иметь имена, зарезервированные за ключевыми словами, имеющими специальное значение для оболочки. Наконец, по существующему соглашению, переменные среды часто состоят из одних прописных букв, в то время как переменные оболочки по традиции состоят только из строчных букв. Правда, в последнее время широкоупотребительной стала так называемая нотация CamelCase, при которой имя переменной начинается со строчной буквы, но далее каждое новое слово пишется с заглавной буквы и без пробелов, например: aVeryLongVar i аЫ е.
Кроме того, при присваивании значений переменным очень важно отметить, что знак равенства не должен отделяться пробелами от имени переменной и ее значения, в противном случае вы получите сообщение об ошибке.
Если вы желаете определить переменную как переменную среды, вы должны экспортировать ее с помощью команды export. Как правило, это делается непосредственно сразу же после декларации переменной, причем сделать это можно с помощью одной строки.
Листинг. Определение переменной как переменной среды ENWAR=Value; export ENWAR
После того как оболочка экспортирует переменную, она будет непосредственно доступной любой программе или командному сценарию, и продолжаться это будет до тех пор, пока не завершится родительский процесс оболочки. Иначе говоря, каждый раз, когда вы запускаете новую оболочку, вам потребуется заново объявить и экспортировать эту переменную. Если вы планируете пользоваться переменной среды достаточно часто, лучше всего объявить ее в файле.bash_profile, чтобы она декларировалась каждый раз, когда вы будете запускать терминал или оболочку.