まず第一に、サブシェルを生成する簡単なスクリプトを作成しようとしています。
#!/bin/sh
# setup
"${@:-$SHELL}"
# teardown
問題は、次のようにデフォルトのプロンプトを変更する必要があることです。
$#デフォルトシェル
$./myscript
(myscript)$#サブシェル
(myscript)$終了
$
私は変更しようとしましたが、PROMPT
これらPS1
の何も動作しません。どうすればいいですか?
PS:可能であれば、BashとZSHで動作するソリューションが必要です。
答え1
次のような他のプロンプトを使用してサブシェルを作成できると思います。
$ bash --rcfile <(echo "PS1='subshell prompt: '") -i
はい
現在の環境:
$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i
サブシェルから:
subshell prompt$ echo hi
hi
subshell prompt$ exit
exit
元のシェルに戻る:
$
答え2
うまくいかないのは、おそらくシェルをロードするとき(たとえば)、プロンプトの/bin/bash
環境変数を含む構成ファイルを再ロードするためです(たとえば:)$HOME/.bashrc
。後ろに目的の環境変数を渡すと、変数は削除されます。
カスタム設定ファイル(--rcfile
Bash IINMなど)をロードするには、シェルのオプションを確認し、これらのオプションを使用して必要な\env
環境変数を渡す必要があります。問題は、これはサブシェルがシェルに依存することです。
(警告:まだ答えではないようです。特に、私のシステムではまだこれを試していません。 )