私は.bashrcで定義された関数を実行するために "bash -c"を使用しようとしています。結局、「コマンドが見つかりません」というエラーが発生します。初期化ファイルをロードするために "bash -c"をどのように取得しますか?
答え1
:を使用して対話型シェルにすることができ、-i
それから〜/ .bashrcが読み込まれます。
bash -i -c "echo \$EDITOR"
あなたができるもう一つのことは、ファイルを明示的に取得することです。コンテンツがある場合/var/tmp/test
:
export XXX=123
あなたも同じです。
bash -c "source /var/tmp/test; echo \$XXX"
123
応答を受け取ります。
答え2
$BASH_ENV
別のオプションは変数を設定することです。
When bash is started non-interactively, to run a shell script, for
example, it looks for the variable BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value as the name
of a file to read and execute. Bash behaves as if the following com‐
mand were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file
name.
したがって、次のようにすることができます。
BASH_ENV=~/.bashrc && bash -c 'your_function'