Я хотел бы использовать переменную среды, в которой я объявил /etc/environment
как счетчик, который должен быть доступен для нескольких несвязанных скриптов, которые запущены в разное время.
Это возможно? До сих пор у меня не было удачи при попытке экспорта ее значения.
Я предполагаю, я мог всегда использовать временный файл для хранения текущего значения, чтения-записи к нему, но я ищу более изящный путь, если существует кто-либо?
Короткий ответ "нет, Вы не можете постоянно изменить переменную среды из сценария Bash".
Более длинный ответ - то, что, когда сценарий Bash выполняется, он получает копию среды (не ссылки на сами переменные среды). Так, пока можно изменить значения копий в рамках сценария, те изменения будут потеряны, когда сценарий выйдет и также не видим к другим сценариям, можно работать одновременно.
Вы можете однако, изменять переменную среды со сценарием Bash по "источнику" - луг это из командной строки:
source your_script_name
Изменения не будут абсолютно постоянными, но вы можете сохранить изменения в переменной среды, пока вы находитесь в той же оболочке входа в систему, из которой вы выполнили скрипт.
Существует несколько команд для выполнения сценария оболочки, каждая команда имеет свой собственный способ выполнения. Если вы запустили сценарий с помощью оператора точки (.), сценарий выполняется в той же оболочке вместо того, чтобы открывать другую оболочку для выполнения.
. myscript.sh
Следовательно, изменения в переменной среды, сделанные в этом скрипте, будут сохраняться до тех пор, пока он выполняется с использованием точки (.) и оболочка, из которой он был запущен, не закрыта.