$SHLVL
シェル呼び出し設定を印刷するおもちゃスクリプトがあります。
$ cat tst.sh
echo "Level: $SHLVL"
echo "Options: $-"
source
現在のシェルにある場合、期待どおりに動作します。
$ source tst.sh
Level: 1
Options: himBHs
サブシェルにいる場合はsourced
あまり面白くありません。
$ /bin/bash
$ source tst.sh
Level: 2
Options: himBHs
設定を使用して実行すると、-c
わずかに異なる結果が表示されます。
$ /bin/bash -c 'source tst.sh'
Level: 2
Options: hBc
したがって、欠落しているオプションを提供します。
$ /bin/bash -sic 'source tst.sh'
Level: 2
Options: himBHcs
sourced
私のスクリプトがこの設定を使用するたびに、-c
スクリプトの最後のコマンドを完了した後、サブシェルは終了します。これは私が避けたいものなので、スクリプトの最後のコマンド以降にinteractive
サブシェルに残る必要があります。
デフォルトでは、次の手順の順序を複製したいが、次のように使用します-c
。
$ /bin/bash
$ source tst.sh
答え1
たぶん、ビューよりも簡単かもしれません。
bash --init-file tst.sh
または
bash --rcfile tst.sh
答え2
これに基づいて、--init-file
Up + Enterを押して履歴からコマンドを再実行できます。
echo 'pwd; ls' >/tmp/hist
HISTFILE=/tmp/hist bash --init-file /tmp/hist