環境を設定するためにいくつかのコマンドを実行してから、ユーザーにプロンプトを表示するbash関数を作成しています。
私は走ることができます
bash -c 'ls'
ls
bashで実行されます。
私もできます。
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