ターミナル、プロンプトが「-Bash-4.2」に変更され、色が失われる


8

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

username place$

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

bash-4.2$

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

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

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

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


プロンプトは変数PS1によって設定されます。ここでこれについての詳細を読むことができます。色付きのプロンプトのさまざまな例もあります
RSFalcon7

これは起こりますか?1)コンソールにログインしたときのみ、2)新しいGUI端末を開いたときだけ、3)1と2の両方ですか?#1がわからない場合は、VTに切り替えてログインするか、を試してくださいbash -l
goldilocks 14

@ TAFKA'goldilocks '両方、bash -lを使用すると、色が戻ってきますが、
プロンプト

私の答えがうまくいかない場合、echo $PS1色付きのログインバージョンからの出力を投稿してください。
goldilocks 14

回答:


10

プロンプト変数$PS1はおそらく設定されなかったので、組み込みのデフォルト\s-\v\$が使用されます。

bashが対話的に起動すると、それは通常のいずれか、コンフィギュレーション・ファイルをソース~/.bashrcまたは~/.bash_profile、それらが存在する仮定し、これは手の込んだプロンプトが設定されている方法です。からman bash

INVOCATION

[...] 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:"

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


TAFKAに感謝します!答えだけでなく、新しいことを学びました:)!
lcjury 14

1

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

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


0

セキュリティ上の理由から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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.