web-dev-qa-db-ja.com

端末、プロンプトが「-Bash-4.2」に変更され、色が失われる

通常、私の端末プロンプトは

username place$

今それだけを示しています

bash-4.2$

そして、すべての色設定が失われました(端末プロファイルでは同じ配色ですが、色が表示されません)

私は何が起こるのかまったくわかりません(そして、これを検索する方法がわかりません)。

それは何も変わらない、私はEclipseとmavenで作業していた、新しいターミナルを開いた、そして新しいターミナルは色を持っていなかった。

注:〜/ .bashrcファイルはありませんが、〜/ .bash_profileがあります。

8
lcjury

プロンプト変数$PS1が設定されていない可能性があるため、組み込みのデフォルト\s-\v\$が使用されます。

Bashがインタラクティブに起動すると、通常は~/.bashrcまたは~/.bash_profileのいずれかである構成ファイルをソースとして提供し、それらが存在すると想定します。これにより、より洗練されたプロンプトが設定されます。 man bashから:

[〜#〜]呼び出し[〜#〜]

[...] bashが対話型ログインシェルとして、または--loginオプションを使用して非対話型シェルとして呼び出されると、ファイル/ etc/profileが存在する場合、そのファイルからコマンドを読み取って実行します。そのファイルを読み込んだ後、〜/ .bash_profile、〜/ .bash_login、〜/ .profile、を探します注文[...]

[...]ログインシェルではないインタラクティブシェルが起動すると、bashは〜/ .bashrc、からコマンドを読み取って実行します(そのファイルが存在する場合)。

プロンプトを設定しないと、ログインシェルと非ログインシェルの2つの異なるコンテキストで発生する可能性があります。ディスプレイマネージャーを使用してGUIに直接ログインする場合、仮想コンソールに切り替えない限り(たとえば、 CtrlAlt + F1〜F6)。ただし、新しいログインシェルを明示的に開くことにより、GUIでbashログインプロファイルをテストできます:bash -l

非ログインシェルで問題が発生する

通常のGUI端末などで問題が発生する場合は、~/.bashrcが見つからないか、グローバルファイル(おそらく/etc/bashrc)のソースを除外するように編集されています。

  • ~/.bashrcが存在しない場合は、新しいユーザー用に/etc/skel/.bashrcを使用して作成する必要があります。そのファイルをホームディレクトリにコピーするだけで、次に開く新しいシェルに対してデフォルトのプロンプトが表示されます。

  • ~/.bashrcが存在する場合は、/etc/bashrcをソースとする行があるかどうかを確認します。

    . /etc/bashrc
      -OR-
    source /etc/bashrc
    

    そうでない場合は、そのファイルが存在するかどうかを確認し(少なくともほとんどのLinuxディストリビューションでは存在するはずです)、そのような行を~/.bashrcに追加します。

ログインシェルで問題が発生する

ログインシェルと非ログインシェルで問題が発生する場合、問題はおそらく上記と同じです。ログインシェルでのみが発生する場合は、上記のINVOCATION引用の下にログインシェルで言及されているファイルがないか、~/.bashrc、これはほとんどのLinuxディストリビューションでは正常です。これらのファイルがいずれも存在しない場合は、~/.bash_profileを次のように作成します。

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

これにより、ほとんどの場合、構成を1つのファイル(~/.bashrc)に保持できます。


どうしてもプロンプトを返せない場合は、次のようにしてプロンプトを作成し、~/.bashrcに入れることができます。

if [ "$PS1 ]; then
    PS1= .... # see below
fi

これは、$ PS1が設定されていて、対話型シェルのデフォルト値があり、他のものがこの値を使用してこれが対話型環境であるかどうかを判断する可能性があるため、他の設定はしたくないためです。

Bashのmanページには、ユーザー名や現在の作業ディレクトリなどの動的機能を使用してプロンプトを設定する方法を説明するPROMPTINGセクションが含まれています。

PS1="\u \w:"

ここに色を使用 のガイドがあります。印刷されない文字を\[および\]で囲む必要があるという事実に注意してください(色についての回答の最後でこれについての説明があります)。

10
goldilocks

これを〜/ .bashrcおよび〜/ .bash_profileに、影響を受けるユーザーのrootとして貼り付けるだけです。

# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi

1
Aziz Zoaib

セキュリティ上の理由からCygwin bashをアップグレードする必要がありました。

2009年頃の古いbash = 4.1.10(4)-release(i686-pc-cygwin)

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

新しいbash = 4.4.12(3)-release(i686-pc-cygwin)circa 2016

まったく同じルックアンドフィールを得るには、.bashrcに追加する必要がありました。

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

注:cd $HOME

0
Randy Sp