rootが.bash_profileをソースしないのはなぜですか?


10

su(ではなくsu -)を使用してrootとしてログインしようとするたびに.bash_profile、user1のホームディレクトリにソースが表示されません。

基本的に、私の/var/rootディレクトリはありません.bash_profile、私はのコピーを入れて、.bash_profile中に/var/rootテストしますsu -

自動的に.bash_profile(でvar/root)ソースも取得しません。

とにかく、私は.bash_profileを使用するときにrootアカウントで自動的に取得されるuser1 を作成したいと思いますsu

私は何をすべきか?

(以前は機能していました。ある日、ソースがありませんでした。おそらくbashの設定が変更されたのでしょうか?source .bash_profileログイン後に入力すると機能します。)

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

回答:


11

rootOS X のデフォルトのシェルは/bin/shです。これshものバージョンですがbashBash という名前で呼び出されsh場合は、次のようになります

sh、POSIX標準にも準拠しながら、の履歴バージョンの起動時の動作をできるだけ模倣しようとします。

対話ログインシェルとして、または非対話型シェルとして起動--loginするためのオプションは、最初の試み読み取りおよび実行コマンドから/etc/profile~/.profile、そのためです。... shとして呼び出されたシェルは、他の起動ファイルからコマンドを読み取って実行しようとはしません

つまり、ログインシェルとして呼び出されたかどうかに関係なく.bash_profile、まったく読み取られません.profile代わりに使用したり、シンボリックリンクを使用したりすることもできます。でログインシェルを起動するとsu -l.profileは起動時に読み込まれますが、読み込ま.bash_profileれることはありません。


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

別のアプローチは、su呼び出しを変更してbashすぐに実行を強制することです。

あなたが言ったことを考えると、おそらくシンボリックリンクをお勧めしますが、BashのPOSIXモードが行う変更を調べて、変更を加えるかどうかを決定することもできます。


5

「ログインシェル」(login、またはから直接呼び出されるsshd)ではなく、単純な「インタラクティブシェル」と見なされるためです。例については、こちらをご覧くださいhttps : //www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

したがってsu、ログインオプション、つまりオプションを使用して強制的に実行し-lます。

su -l

または、環境を.bashrcファイルに入れます。


5

ログインシェルを起動していないため、rootユーザーは.bash_profileではなく.bashrcファイルを実行しようとします。

bashマニュアルからman bash

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

~.bashrcファイルがrootユーザーのホームディレクトリにある必要がある場所に注意してください。

実際に質問に答えるために、user1の.bashrcファイルを使用する場合は、user1からrootユーザーへのソース.bashrc間に(シンボリック)リンクを作成することをお勧めします。

. /homedirectory/of/user1/.bash_profilerootユーザーの.bashrcファイルに行を追加することで、user1 .bashrcまたは.bash_profileのソースを検討することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.