新しいbashプロセスを作成すると、プロンプトはデフォルトで非常に単純なものになります。 これを変更するために.bashrcなどを編集できますが、bashコマンドでプロンプトを渡す方法はありますか?新しいbashでのbashプロンプトの変更
ありがとうございました!
新しいbashプロセスを作成すると、プロンプトはデフォルトで非常に単純なものになります。 これを変更するために.bashrcなどを編集できますが、bashコマンドでプロンプトを渡す方法はありますか?新しいbashでのbashプロンプトの変更
ありがとうございました!
プロンプトは、PS1、PS2、PS3、およびPS4環境変数によって定義されます。したがって、たとえば以下は「FOO:」:にプロンプトセットと新しいのbashを起動します
PS1="foo: " bash --norc
--norc
はPS1
変数をオーバーライドします初期化ファイルの処理を抑制するために必要とされます。
+1 PS1を.bashrcの代わりに.bash_profileに定義すると、 " - -norc "オプション。 –
ありがとう! @glennjackman:私はすべてのシェルでそれを望んでいない、私は私が呼び出すことができるテスト環境を持っています。このテスト環境にいるときは、プロンプトにこれを示す必要があります。 – Xaero182
環境変数を設定し、その環境変数を.bashrcのプロンプトで使用することができます。
私は同じ問題があります。コマンドラインから一時的な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$
あなたは[ 'PS1'](http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-promptを設定することができます.html)を '〜/ .bashrc'に入れてください。 –
この質問の私の公式を追加するだけで、見つけにくいです。"コマンドラインから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