bash -cが完了した後にインタラクティブシェルを維持する方法は?

bash -cが完了した後にインタラクティブシェルを維持する方法は?

$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

おすすめ記事