Переменные среды по самой своей природе доступны для всех процессов, запускаемых процессом/оболочкой, которые устанавливают переменные среды.
Переменная среды в Unix — это переменная оболочки, которая экспортируется с помощью export
, например
MYVAR="my value"
export MYVAR
Обычно переменные среды задаются в файле запуска оболочки. В случае bash
это находится в ~/.bash_profile
, и многие другие оболочки используют ~/.profile
.
В /etc
(например, /etc/profile
) есть общесистемные сценарии инициализации оболочки, которые можно использовать для настройки среды для всех пользователей.
Переменные среды также могут быть установлены глобально для всех пользователей независимо от оболочки, но это делается по-разному в зависимости от вашего варианта Unix. Большинство BSD могут сделать это, изменив /etc/login.conf
, в то время как некоторые Linux используют /etc/environment
или другие механизмы.
Вместо создания файла abc.xyz
создайте символическая ссылка на (реальный) файл abc.xyz.YYYYMMDD
:
linkname="abc.xyz"
today="$( date +"%Y%m%d" )"
filename="$linkname-$today"
if [[ ! -e "$filename" ]] || [[ ! -e "$linkname" ]]; then
touch "$filename"
ln -s -f "$filename" "$linkname"
fi
Это создаст
lrwxr-xr-x 1 kk kk 16 Feb 2 11:16 abc.xyz -> abc.xyz-20170202
-rw-r--r-- 1 kk kk 0 Feb 2 11:16 abc.xyz-20170202
, и ваша программа, записывающая в abc.xyz
, фактически будет записывать в abc.xyz-20170202
.
На следующий день, когда вы запустите это, вы получите
lrwxr-xr-x 1 kk kk 16 Feb 2 11:31 abc.xyz -> abc.xyz-20170203
-rw-r--r-- 1 kk kk 0 Feb 2 11:16 abc.xyz-20170202
-rw-r--r-- 1 kk kk 0 Feb 2 11:31 abc.xyz-20170203