ターゲット

ターゲット

ターゲット

同様の質問を何度も受けましたが、望む方法で実装されているのを見たことはありません。私は次の目標を達成したいと思います。

  • Bashのプロンプトをusername@hostname directory #rootセッションまたはusername@hostname directory $他のユーザーのプロンプトに設定します。
  • .bashrc私のユーザーのためのファイルを定義し、シンボリックリンクルートユーザー(または通常は他のユーザー)の場合。複数のユーザーのためにファイルをコピーして毎回更新する必要がないようにしたいと思います.bashrc

私が今まで持っていること

# Bash prompt to ``username@hostname directory $ '' in bold
if [ "$(id -u)" = "0" ]; then
    PS1="\e[1m\u@\h \w # \e[0m"
else
    PS1="\e[1m\u@\h \w $ \e[0m"
fi

これはちょっとそんな作品です。ユーザーセッションで端末を起動すると、プロンプトが期待どおりに機能します。しかし、su -切り替えたrootセッションを使用すると問題が発生します。

何らかの理由で.bashrcソースをインポートできず、デフォルトのプロンプト([root@hostname directory]#)が表示され続けます。これにより、source .bashrcプロンプトが私が望むように更新されます(root@hostname directory #)。

質問

私が望む結果をどのように取得できますか?.bashrc他のすべてのユーザーとシンボリックリンクして特定のユーザーに切り替えたときに正しくロードされるファイル。

ベストアンサー1

解決策

〜のようにこんにちはコメントに記載されています(「ありがとうございます」)。

su -ログインシェルが実行され、Bashは.bashrcログインシェルからデータを読み取らない。あなたが持っている.profile、または、またはから明示的に.bash_profile持って来ない限り.bash_login。だからあなたはそれを確認したいかもしれません。

したがって、source .bashrc私のユーザーに追加し、.bash_profileroot.bash_profileユーザーへのシンボリックリンクを作成するのが効果的でした。

おすすめ記事