回答:
crontab内のすべてのbashスクリプトをロードする場合はBASH_ENV
、それをcrontabレベルで設定します。
BASH_ENV=/path/to/startup.bash
12 34 * * * /path/to/bash_script
1 23 1 * * /path/to/other_bash_script
BASH_ENV
特定のエントリのみに設定する場合は、そこに設定します。するとBASH_ENV
、crontab自体にリストされているコードには設定されませんが、とにかく複雑なものをそこに置くことは悪い考えです。
12 34 * * * export BASH_ENV=/path/to/startup.bash; /path/to/bash_script
1 23 1 * * /path/to/other_bash_script
特定のスクリプトで常に構成ファイルをロードする場合は、スクリプト内から直接ロードします。
#!/bin/bash
. /path/to/configuration.bash
…
export
INGの$BASH_ENV
あなたは、単一のプロセスのためにそれを設定している場合は?ただ、BASH_ENV=/path/to/startup.bash /path/to/bash_script
それを行うには賢明な方法です。
BASH_ENV
は、非対話型シェルでのみ読み取られ、そのシェルがbashである場合にのみ(そして、名前の下でも呼び出されませんsh
)。非ログインの対話型シェルは以下を検索しません$BASH_ENV
:
$ export BASH_ENV=/home/cuonglm/bash-env.sh
$ bash -lci '. test.sh'
QWERTY
$ bash -lc '. test.sh'
BASH_ENV read
QWERTY
$ bash -ci '. test.sh'
QWERTY
$ bash -c '. test.sh'
BASH_ENV read
QWERTY
ユーザーの非対話型シェルで実行される標準ファイルはありません。あなたはそれを別々のファイルに設定してからそれを調達するべきです:
bash -c '. ~/.profile; echo 123'
それとも、のようないくつかのシステム全体の設定ファイルで設定することができます/etc/environment
か/etc/bashrc.bashrc
。
pam_env
。または$HOME/.env
、すべてのスクリプトでソースを提供します。