Действительно ли возможно изменить значение переменной среды из сценария удара так, чтобы это сохранилось?

Я хотел бы использовать переменную среды, в которой я объявил /etc/environment как счетчик, который должен быть доступен для нескольких несвязанных скриптов, которые запущены в разное время.

Это возможно? До сих пор у меня не было удачи при попытке экспорта ее значения.

Я предполагаю, я мог всегда использовать временный файл для хранения текущего значения, чтения-записи к нему, но я ищу более изящный путь, если существует кто-либо?

0
задан 15 May 2018 в 04:54

2 ответа

Короткий ответ "нет, Вы не можете постоянно изменить переменную среды из сценария Bash".

Более длинный ответ - то, что, когда сценарий Bash выполняется, он получает копию среды (не ссылки на сами переменные среды). Так, пока можно изменить значения копий в рамках сценария, те изменения будут потеряны, когда сценарий выйдет и также не видим к другим сценариям, можно работать одновременно.

Вы можете однако, изменять переменную среды со сценарием Bash по "источнику" - луг это из командной строки:

source  your_script_name
1
ответ дан 29 October 2019 в 08:04

Изменения не будут абсолютно постоянными, но вы можете сохранить изменения в переменной среды, пока вы находитесь в той же оболочке входа в систему, из которой вы выполнили скрипт.


Существует несколько команд для выполнения сценария оболочки, каждая команда имеет свой собственный способ выполнения. Если вы запустили сценарий с помощью оператора точки (.), сценарий выполняется в той же оболочке вместо того, чтобы открывать другую оболочку для выполнения.

. myscript.sh

Следовательно, изменения в переменной среды, сделанные в этом скрипте, будут сохраняться до тех пор, пока он выполняется с использованием точки (.) и оболочка, из которой он был запущен, не закрыта.

1
ответ дан 17 May 2020 в 20:43

Другие вопросы по тегам:

Похожие вопросы: