入力するすべてのコマンドに対してLinuxコンソールでbash -xをオンにすると、この出力が得られます。
printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
これはかなり面倒です。どうすればオフにできますか。
前もって感謝します
このコマンドは、ターミナル エミュレータのタイトルを変更するためのエスケープ シーケンスを出力します。だから私はそれがあなたの.bashrcまたは.bash_profilewhen TERMmatchで設定されていると思いますxterm*。そこを見て、コードにコメントしてください。
bash -xコマンドは、たとえそれが印刷の一部であっても、呼び出されたすべてのコマンドを表示するため、印刷され$PS1ます。そのため、対話型シェルで使用したくない可能性set -xがありますが、コードをスクリプトに入れset -x、最初とset +x最後に追加する必要があります (必要でない場合はオプションsource)。
問題は理由ではなく、修正方法でした。bash プロンプトで次のように入力します。
unset PROMPT_COMMAND; PS1='\w> '
今なぜ。コマンドはPROMPT_COMMAND、すべての bash コマンドの後に評価されます (設定されますPS1)。通常、このアクティビティは表示されません。しかし、-xあなたと一緒にできます。
を使用set -xして、デバッグをset +xオンにしたりオフにしたりできます。
デバッグオプションをオンにすると、BASHは$P4各行のの値を出力します。デフォルトでは、単純で、+その後にスペースが続きます。設定してみてくださいPS4='+ '。
それが機能しない場合は$PROMPT_COMMAND、プロンプトを設定していたKornshellユーザーがいます。プロンプトには、ユーザー名やディレクトリなどの有用な情報が表示されるのが一般的です。BASHでは、さまざまなエスケープシーケンスを使用してこれを行うことができます。例えば:
PS1="\u@\h:\w$ "
\uユーザー名、\h短いホスト名、および\wディレクトリに基づく現在のディレクトリに置き換えられます$HOME。ユーザーがいる場合は$HOME/bin、プロンプトが表示されます。
david@foo-sys:~/bin$
ユーザーがにいる場合/usr/bin、プロンプトは次のようになります
david!@foo-sys:/usr/bin$
Kornshellでは、これらのエスケープシーケンスを使用することはできません。代わりに、コマンドのエイリアスcdを作成し、プロンプトを設定するcd関数を使用します。または、$(..)構文を使用します。Kornshellを使用していますが、プロンプトは次のようになります。
PS1=$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")
やっかいですね。BASHでは、これを行うことができました。
PS1="\u@\h:\w\n$ "
とにかく、KornshellユーザーがBASHを使用するときは、エスケープシーケンス$COMMAND_PROMPTを使用する代わりに変数を設定するのが一般的です。これは、それが彼らの知っている方法だからです。そして、それを行うと、プロンプトコマンドが毎回印刷されます。たとえば、次のようにBASHプロンプトを設定できます。
PROMPT_COMMAND="print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ "
設定するとset -x、毎回そのプリントが表示されます。
あなたがすべきことは、$HOME/.bash_profileまたはそれが存在しない場合は$HOME/.profileファイルに移動し、設定されている行を削除することですPROMPT_COMMAND。代わりに、次のように変更します。
PS1="\e]0\u@\h:\w\a$ "
これは多かれ少なかれ同じプロンプトです。.profileまたはを変更したくない場合は、次の.bash_profileようにします。
$ unset PROMPT_COMMAND
$ PS="\e]0\u@\h:\w\a$ "
もう1つの可能性:プロンプトがに設定されていないか$HOME/.bash_profile、$HOME/.profileまたはに設定されていない可能性があります$HOME/.bashrc。その場合、Kornshellの担当者であるシステム管理者がいて、/etc/profileファイルにプロンプトが設定されています。$HOME/.bash_profileファイルの最後に上記の2行を追加して、ファイルのプロンプト設定を自分で上書きする必要があります。
これは、実際の$PROMPT_COMMAND変数のようです。代わりに使用したい場合があります$PS1。
http://www.gnu.org/software/bash/manual/bashref.html#index-PPIDを参照してください。