"bash -c"から.bashrcをロードする方法

"bash -c"から.bashrcをロードする方法

私は.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'

関連情報