Неинтерактивная оболочка, не входящая в систему, будет пытаться получить любой сценарий, указанный в $ BASH_ENV. Но как я могу гарантировать, что $ BASH_ENV будет установлен до того, как задание cron или сценарий получат возможность установить $ BASH_ENV для какого-либо конкретного сеанса? Это единственный вариант для компиляции Bash с жестко закодированным?
bash
environment-variables
Igorio
источник
источник
pam_env
. Или просто источник$HOME/.env
во всех ваших сценариях.Ответы:
Если вы хотите, чтобы все скрипты bash в вашем crontab загружались
BASH_ENV
, установите его на уровне crontab.Если вы хотите установить
BASH_ENV
только для определенной записи, установите его там. ТогдаBASH_ENV
он не будет установлен для кода, указанного в самом crontab, но в любом случае плохая идея ставить там что-то сложное.Если вы хотите, чтобы определенный скрипт всегда загружал какой-либо файл конфигурации, загрузите его непосредственно из скрипта.
источник
export
ING ,$BASH_ENV
если вы только установить его для одного процесса? ПростоBASH_ENV=/path/to/startup.bash /path/to/bash_script
разумный способ сделать это.BASH_ENV
только для чтения в неинтерактивной оболочке, и только если эта оболочка bash (и не вызывается под именемsh
, либо). Интерактивная оболочка без логина не ищет$BASH_ENV
:Не существует стандартного файла, который запускается в неинтерактивной оболочке для пользователя. Вы должны установить его в отдельный файл, а затем получить его:
Или вы можете установить его в каком - то системах широкого конфигурационного файла , как
/etc/environment
или/etc/bashrc.bashrc
.источник