サブシェルのプロンプトを変更する方法

サブシェルのプロンプトを変更する方法

まず第一に、サブシェルを生成する簡単なスクリプトを作成しようとしています。

#!/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後ろに目的の環境変数を渡すと、変数は削除されます。

カスタム設定ファイル(--rcfileBash IINMなど)をロードするには、シェルのオプションを確認し、これらのオプションを使用して必要な\env環境変数を渡す必要があります。問題は、これはサブシェルがシェルに依存することです。

警告:まだ答えではないようです。特に、私のシステムではまだこれを試していません。 )

関連情報