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


8

私はとりわけ、サブシェルを作成する単純なスクリプトを作成しようとしています。

#!/bin/sh

# setup

"${@:-$SHELL}"

# teardown

問題は、デフォルトのプロンプトを変更する必要があるためです。たとえば、次のようにします。

$#デフォルトのシェル
$ ./myscript(myscript)$#
サブシェル
(myscript)$ exit
$

私は変更しようとしていないPROMPTPS1、これらの作品のどれも。どうやってやるの?

PS .:可能であれば、BashとZSHの両方で機能するソリューションが必要です。



他の質問はbashただの質問だったので、正確な複製ではありません。
ステファンChazelas

正しい複製のように見えますか;-(
デイジー

回答:


7

次のような別のプロンプトでサブシェルを作成できると思います。

$ bash --rcfile <(echo "PS1='subshell prompt: '") -i

現在の環境:

$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i

サブシェルで:

subshell prompt$ echo hi
hi
subshell prompt$ exit
exit

元のシェルに戻る:

$ 

1
here stringプロセスの代わりにを使用できます。例えば<<< "PS1..."
ヨルダン2013

1
@jordanm-例を提供できますか?私はこれをいじりましたが、ヒア文字列を使用した実用的な例を得ることができませんでした。
slm

2

あなたが(例えば:あるべきシェルを読み込むときので、それは仕事があるかもしれないしない理由/bin/bash)、それは(例えば:プロンプトの環境変数を含め、その設定ファイル、リロードなってしまいます$HOME/.bashrcの後に渡されると必要な環境変数-したがって、変数は破棄されます。

シェルのオプションをチェックして、カスタム構成ファイル(例:--rcfileBash IINM内)をロードし、それらを使用し\envて、必要な環境変数を渡すことができます。問題は、一度実行すると、サブシェルの起動がシェル依存になることです。

CAVEAT EMPTOR:これはまだ答えだとは思っていません-特に、私のシステムではまだこれを試していません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.