6

新しいbashプロセスを作成すると、プロンプトはデフォルトで非常に単純なものになります。.bashrcなどを編集してこれを変更できることは知っていますが、bashコマンドでプロンプトを渡す方法はありますか?

ありがとう!

4

3 に答える 3

9

プロンプトは、PS1、PS2、PS3、およびPS4環境変数によって定義されます。したがって、たとえば、次の場合、プロンプトが「foo:」に設定された新しいbashが開始されます。

PS1="foo: " bash --norc

は、変数--norcをオーバーライドする初期化ファイルの処理を抑制するために必要です。PS1

于 2012-04-16T17:23:32.750 に答える
4

同じ問題があります。コマンドラインから一時的なbashを起動したいと思います。他のほとんどの環境変数は残りますが、から供給されたものは~/.bashrc、オーバーライドするのが難しいです-特に私のように、あなたがすでに持っているもの(および内部のエイリアスなど)を実際に保持したい場合は、プロンプト ~/.bashrcを除いてください。PS1

これが私のために働くものです(それ--init-fileはの同義語/エイリアスであることに注意してください--rcfile):

bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')

基本的に、角かっこ/小括弧+括弧のイディオムは、プロセス置換<()を開始します。bash括弧内のstdoutにエコーされたものはすべて、一時ファイルになります/dev/fd/<n>。だから私たちは最初にoutの内容を猫にし~/.bashrcます; 次に、最後にsetコマンドを追加するだけですPS1(これは事実上オーバーライドされます)-これは最終的に/dev/fd/<n>;になります。その後、新しいbashに使用します。/dev/fd/<n>rcfile

これはそれがどのように振る舞うかです:

user@pc:tmp$ TESTVAR="testing" bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')
user@HELLO:tmp$ test-alias-tab-completion ^C
user@HELLO:tmp$ echo $TESTVAR 
testing
user@HELLO:tmp$ exit
exit
user@pc:tmp$ 
于 2013-08-12T04:12:58.043 に答える
0

環境変数を設定してから、.bashrcのプロンプトでその環境変数を使用できます。

于 2012-04-16T17:18:44.770 に答える