非ログインシェルの問題

非ログインシェルの問題

通常、私の端末プロンプトは次のようになります。

username place$

今は見せるだけです

bash-4.2$

すべての色設定が失われます。 (端末プロファイルに同じカラースキームがありますが、カラーは表示されません。)

何が起こっているのか分かりません(そしてこれを検索する方法もわかりません)。

最初から変更されました。 EclipseとMavenを使用しています。新しい端末を開いたが、新しい端末に色がない。

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

ベストアンサー1

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

Bashがインタラクティブで起動されると、構成ファイル(通常は存在する~/.bashrc~/.bash_profile仮定)がインポートされます。これは高度なプロンプトが設定される方法です。からman bash

呼ぶ

[...] bashが--loginオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず/ etc / profileファイル(ファイルが存在する場合)からコマンドを読み取り、実行します。ファイルを読み込んで見つけます。~/.bash_profile, ~/.bash_login,そして ~/.プロフィール、そのような順序で[… ]

[...]ログインシェルではなく対話型シェルを起動すると、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

ログインシェルの問題

ログインシェルと非ログインシェルの両方でこの問題が発生した場合、問題は上記と同じかもしれません。そのようなことが起こった場合ただログインシェルの場合、上記の引用に記載されているログインシェル用のファイルの1つが存在しないか、ほとんど~/.bashrcのLinuxディストリビューションで一般的に提供されているファイルは取得されません。これらのファイルがない場合は、~/.bash_profileそのファイルを作成します。

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

ほとんどの場合、これにより設定をファイル(~/.bashrc)に保存できます。


何をしてもプロンプトが表示されない場合は、プロンプトを作成して~/.bashrc次のように入力できます。

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

これは、$PS1がすでに設定されており、対話型シェルのデフォルト値を持っているためです。他の場所でこの値を使用して、これが対話型環境であることを確認できるため、他の方法で設定したくないからです。

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

PS1="\u \w:"

ガイドがありますここに色を使用してください。印刷されていない文字を\[とで囲む必要があります\](この内容は色の答えの最後で説明されています)。

おすすめ記事