bash コマンドを実行し、プロンプトを開いたままにするにはどうすればよいでしょうか?

bash コマンドを実行し、プロンプトを開いたままにするにはどうすればよいでしょうか?

いくつかのコマンドを実行して環境を設定し、プロンプトをユーザーに表示する bash 関数を作成しています。

走れる

bash -c 'ls'

lsbash で実行します。

私もできる

bash -c 'ls ; exec bash'

を実行するにはls、bash プロンプトを開いたままにします。

ただし、ファイルをソースし、いくつかのエイリアス、関数、および環境変数を設定して、プロンプトを開いたままにしておきたいので、次のようになります。

 bash -c 'source env.sh ; exec bash'

もちろん、サブシェルはエイリアスや関数を継承しないので、これは機能しません。この問題を回避する方法はありますか? 引き続きユーザーの.bashrcソースを指定して、--init-fileオプションを使用しないようにしたいと思います。

答え1

開始時にユーザーの init ファイルをソースとする init ファイルを設定し、その後は必要な操作を実行します。

$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
  printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh

関連情報