ルートが.bash_profileを取得できないのはなぜですか?

ルートが.bash_profileを取得できないのはなぜですか?

su(代わりに)を使用してsu -rootとしてログインしようとするたびに、.bash_profileuser1のホームディレクトリから起動されません。

デフォルトでは、私の/var/rootディレクトリにはそのエントリがないので、テスト用に.bash_profileコピーを入れました。.bash_profile/var/rootsu -

また、 .bash_profile(からvar/root)自動的にソースを提供しません。

.bash_profileとにかく.dllを使用するときは、rootアカウントからuser1を自動的にインポートしたいと思いますsu

どうすればいいですか?

(以前は動作しました!ある日ソースが出てこなかったんです!もしかしたらbash設定がちょっと変わりましたか?source .bash_profileログイン後に入力すると動作しますね。

私はMacとOS X Yosemiteを使用しています。

ベストアンサー1

rootOS Xのデフォルトシェルはのバージョン/bin/shでもありますが、shbashshBashという名前で呼び出されたとき:

shPOSIX 規格に準拠しながら、記録バージョンの開始動作をできるだけ似ているように模倣します。

対話型ログインシェルまたはoptionsを含む非対話型シェルで呼び出された場合は、--loginまず試してください。からコマンドを順番に/etc/profile読み、実行します。~/.profile... shで呼び出されたシェルは、他の起動ファイルからコマンドを読み取って実行しようとしません。

つまり.bash_profile全く読まない。ログインシェルで呼び出されるかどうかに関係なく.profile代わりに使用するか、互いにシンボリックリンクすることもできます。起動ログインシェルを使用すると、起動時にロードされますがsu -lロードされません。.profile.bash_profile


あなたもできます使用dsclルートシェルを変更します(注/etc/passwdいいえOS Xでシェルを決定するために使用されます)。を使用して、ルートの現在のシェルを確認できますdscl . -read /Users/root UserShell。ドキュメントを参照して他のものに変更する前に慎重に考えてください。

su別のアプローチは、すぐに実行されるように呼び出しを変更することですbash

あなたが言ったことを考えると、おそらくシンボリックリンクをお勧めしますが、Bashの変更を見たいと思うかもしれません。POSIXモード欲しいものを作成して決定します。

おすすめ記事