Um shell não interativo e sem logon tentará obter qualquer script especificado em $ BASH_ENV. Mas como garanto que $ BASH_ENV seja definido antes que um trabalho ou script cron tenha a chance de definir $ BASH_ENV para qualquer sessão em particular? É a única opção para compilar o Bash com ele codificado?
bash
environment-variables
Igorio
fonte
fonte
pam_env
. Ou apenas fonte$HOME/.env
em todos os seus scripts.Respostas:
Se você deseja que todos os scripts bash no seu crontab carreguem
BASH_ENV
, configure-o no nível do crontab.Se você deseja definir
BASH_ENV
apenas para uma entrada específica, defina-a lá. EntãoBASH_ENV
não será definido para o código listado no próprio crontab, mas é uma má idéia colocar qualquer coisa complexa lá de qualquer maneira.Se você deseja que um script específico sempre carregue algum arquivo de configuração, carregue-o diretamente de dentro do script.
fonte
export
ing$BASH_ENV
se você está definindo-o apenas para um único processo? ApenasBASH_ENV=/path/to/startup.bash /path/to/bash_script
é a maneira sensata de fazê-lo.BASH_ENV
é lido apenas em um shell não interativo e somente se esse shell for bash (e também não for chamado sob o nomesh
). Um shell interativo sem login não procura$BASH_ENV
:Não há arquivo padrão que seja executado no shell não interativo para o usuário. Você deve configurá-lo em um arquivo separado e depois obtê-lo:
Ou você pode configurá-lo em algum arquivo de configuração em todo o sistema, como
/etc/environment
ou/etc/bashrc.bashrc
.fonte