2012-04-16 19 views
3

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

ありがとうございました!

+0

あなたは[ 'PS1'](http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-promptを設定することができます.html)を '〜/ .bashrc'に入れてください。 –

+0

この質問の私の公式を追加するだけで、見つけにくいです。"コマンドラインからbashスタートアップ時にPS1をオーバーライドする ";また、関連[ショートカットからカスタムディレクトリに変更するために、bash --login -iのカスタムのinitスクリプトを実行する - Stack Overflow](http://stackoverflow.com/questions/5203604/executing-a-custom-init -script-for-bash-login-i-for-a-cuに変更する例) – sdaau

答えて

6

プロンプトは、PS1、PS2、PS3、およびPS4環境変数によって定義されます。したがって、たとえば以下は「FOO:」:にプロンプ​​トセットと新しいのbashを起動します

PS1="foo: " bash --norc 

--norcPS1変数をオーバーライドします初期化ファイルの処理を抑制するために必要とされます。

+0

+1 PS1を.bashrcの代わりに.bash_profileに定義すると、 " - -norc "オプション。 –

+1

ありがとう! @glennjackman:私はすべてのシェルでそれを望んでいない、私は私が呼び出すことができるテスト環境を持っています。このテスト環境にいるときは、プロンプトにこれを示す必要があります。 – Xaero182

0

環境変数を設定し、その環境変数を.bashrcのプロンプトで使用することができます。

3

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

が私のために働くものです(--init-file--rcfileの同義語/別名であることに注意してください):

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

基本的には、ブラケット/小なり<()が起動bashプロセス置換+カッコイディオム。カッコ内のstdoutにエコーされるものはすべて、一時ファイル/dev/fd/<n>になります。だから私たちは最初の猫の内容を外に~/.bashrc;最後にPS1 setコマンドを追加するだけです(効果的に上書きされます)。これは/dev/fd/<n>になります。 bashは、新しいrcfile/dev/fd/<n>を使用します。

これは、それがどのように動作するかです:

[email protected]:tmp$ TESTVAR="testing" bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\[email protected]:\W\$\[\033[00m\] "') 
[email protected]:tmp$ test-alias-tab-completion ^C 
[email protected]:tmp$ echo $TESTVAR 
testing 
[email protected]:tmp$ exit 
exit 
[email protected]:tmp$ 
関連する問題