ユーザーを切り替えるとコマンドの色が消えるのはなぜですか?

ユーザーを切り替えるとコマンドの色が消えるのはなぜですか?

agochar現在、GUIログインでログインしています。端末にコマンドを入力するたびに表示されます。色ですが、ユーザーを切り替えてsudo su anupam端末にコマンドを入力すると色がなくなりますか?私はちょうどLinuxを学び始めたので、この分野の専門家ではありません。これはそれほど深刻な問題ではありませんが、誰かがこの問題を解決するのに役立つ場合は、Linuxコマンドラインを学ぶのが簡単でしょうか?

答え1

シェルの場合はzshおそらく。zsh-syntax-highlighting青いコマンド私は道を見つけるべきです/usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh。この設定は、コマンドだけでなく、間" " の文字列' '、パス名、および存在しないコマンドにも影響します。たとえば、次のようにしてこの動作を取得しますzsh-syntax-highlighting

bashで使用したプロファイルは使用できないため、別のzshプロファイルをインストールする必要があります。zsh-syntax-highlighting代わりに、次のコマンドを使用してインストールできますが、最初にユーザーとしてログインしていることを確認してください(ble.shコマンドがシェルを使用していると仮定)。
anupambash

curl -L https://github.com/akinomyoga/ble.sh/releases/download/nightly/ble-nightly.tar.xz | tar xJf -
mv ble-nightly* ~/.local/share/blesh
echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc

または確認できますgitリポジトリそして、さまざまなインストール方法に従ってオペレーティングシステムにインストールしてください。
しかし、私はgitリポジトリで次のものを使用しているので、小さなバグが見つかりました(私の場合はまったく機能しない限り)。

mkdir -p ~/.local/share/blesh
mv ble-nightly* ~/.local/share/blesh
echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc

しかし、実際にはパスは~/.local/share/blesh/ble.sh存在しません。実際のパスは次のとおりです~/.local/share/blesh/ble-nightly-20221112+0c6291f/ble.sh。したがって、前述のコマンドを使用することをお勧めします。(コマンドがmv異なる動作をしているかどうかはわかりません。アップルシステム)


最後に再度ログインすると、anupam同様の動作が表示されることがありますzsh

ここに画像の説明を入力してください。

メモ:ターミナルに大きなコマンドを貼り付けるときにこれらの設定を使用すると、少し遅くなる可能性があります。 in zshPasteコマンドは通常、in Pasteコマンドよりも遅いことがわかりましたbash

答え2

端末設定、コマンドプロンプトの外観、色などは、シェル起動スクリプトによって設定されます。最も一般的に使用されるシェルの場合、ファイルは、、、およびにbashあります。/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc

を実行するときは、sudo別の起動スクリプト(および他のシェルも可能)を使用して別のユーザーとしてコマンドを実行します。特に、rootユーザーと新しく作成されたユーザーには起動スクリプトのみが含まれていることがよくあります。コメントでの使用について言及しましたが、zshrootユーザーと新規ユーザーはbashデフォルトでそれを有効にしている可能性があります。

私は構成に慣れていませんzsh。ただし、ほとんどのシェルでカラープロンプトをすばやく設定する最も簡単な方法は、次の方法を使用することです。宇宙船。使用しているディストリビューションに応じて、パッケージストアにあります。

答え3

バッシュを使用する場合

/home/$USER/.bashrc$USER に固有の構成ファイルがあるためです。このプロファイルをroot構成ファイルとして使用するには、代わりに次のようにします。

if [[ $UID == 0 ]]; then
   export PS1="root_Profile"
else
   export PS1="user_Profile"
fi

$UID== 0はルートアカウントにあることを意味し、そうでなければ$ USERアカウント/プロファイルであることを意味します。

関連情報