LINUX.ORG.RU

BASH и запуск скриптов


0

0

$ cat test.sh

#!/bin/bash

PATH="$PATH:/home/rubystar/myprogram/bin"

export PATH

До выполнения:

$ echo $PATH

/bin:/usr/bin:/usr/local/bin

Запускаю данный сценарий.

$ ./test.sh

$ echo $PATH

/bin:/usr/bin:/usr/local/bin

Почему не экспортируется переменная?

Пробую так:

$ . test.sh

$ echo $PATH

/bin:/usr/bin:/usr/local/bin:/home/rubystar/myprogram/bin

Объясните: как нужно правильно запускать скрипты на BASH?

А что вы хотели?

В первом случае порождается _новый_ дочерний процесс bash и в _нём_ происходит выполение скрипта. Разумеется переменные окружения дочернего процесса никак не влияют на переменные окружения родителя.

Во втором же случае все команды скрипта выполняются в _текущем_ bash-сеансе и поэтому переменные окружения меняются.

Тот или иной способ запуска скриптов нужно выбирать в зависимости от того, что хочешь получить -- обычно используется первое, а второе как раз в тех случаях, если файл используется для хранения настроек:
то есть если скрипт использует например переменную окружения LOGFILE для хранения имени log-файла, и хочеться чтобы этот файл легко было перенести без внесения изменений в сам скрипт, то пишут, например:
. ~/.script.conf
Тогда, чтобы изменить файл журнала достаточно в файле ~/.script.conf написать:
LOGFILE="/log/mylogpath_for_script"

unDEFER ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.