ターゲット
同様の質問を何度も受けましたが、望む方法で実装されているのを見たことはありません。私は次の目標を達成したいと思います。
- 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_profile
root.bash_profile
ユーザーへのシンボリックリンクを作成するのが効果的でした。