ハイフンの有無による「su」の違いは何ですか?


87

私はLinuxターミナルを初めて使用しますが、suハイフンを使用した場合とハイフンを使用しsuない場合の違いが何なのかよくわかりません。たとえば、su - usernamevs.。su username

私はドキュメントを調べましたが、そこには言及されていませんでした。誰かが私を助けてくれますか?


「ログインシェル」とは、多くの場合、インタラクティブシェルを意味します。これは、スクリプトを実行して終了するだけのシェルです。
シャーバズ


1
Googleで入力する必要はありませんsu --help
アートシェイデロフ

1
noteworthynessの新しいログインシェルを起動するためにハイフンを使用しないように、rootにsuコマンドが-INGのとき、これは特に便利です、あなたは$PATH更新されませんので、あなたは直接にルートのみのバイナリを呼び出すことができなくなります/sbin/usr/sbin
ギャレット

回答:


85

「-」と「ハイフンなし」の違いは、後者既存の環境(変数など)を保持することです。前者は新しい環境を作成します(自分の環境ではなく、実際のユーザーの設定を使用します)。

https://wiki.archlinux.org/index.php/Su

ハイフンには2つの効果があります。

1)そのユーザーとしてログインすることにより、現在のディレクトリから新しいユーザーのホームディレクトリ(たとえば、rootユーザーの場合は/ root)に切り替えます。

2)環境変数を〜/ .bashrcで指定された新しいユーザーの環境変数に変更します。つまり、suの最初の引数がハイフンである場合、現在のディレクトリと環境は、(既存のセッションを引き継ぐのではなく)新しいユーザーが新しいセッションに実際にログオンした場合に予想されるものに変更されます。


このサイト-> admon.org/difference-between-login-shell-and-non-login-shellは、ハイフンなしで使用すると、ファイル/ etc / profileおよび〜/ .bash_profileは実行されないことを示しています。これらの2つのファイルは、ユーザー環境にどのような意味がありますか?
user574183

2
これらの2つのことは、ユーザー環境を設定するファイルです:) これらを実行しないことは、元の環境を維持することを意味ます。( "-"を使用して)それらを実行するということは、あなたの環境を、あなたが「ス」しようとしているユーザーと同じにすることを意味します。通常、ハイフンを使用することはあなたが望むものです-私は "su"を使うたびに "-"を習慣的に使います。
paulsm4

実行の順序は本当に重要ですか?Iamはこれを求めています。なぜなら、そのサイトでは、2つのファイル/ etc / bashrc〜/ .bashrcが非ログインシェルの場合に逆順で実行されると述べているからです。誰か助けてください
-user574183

1
@ user574183もちろん、たとえば、一方が何かを設定し、もう一方が何かを設定解除するか、他の何かに設定する場合
-fikr4n

3

su -ルートのログインシェルを起動します。通常のシェルとの違いについては、たとえばこのサイトを参照してください。


2
それは本当ですが、問題ではありません:)
paulsm4

それは誤りです。ダッシュでsuを実行し、別のユーザーのシェルを起動させることができます。次を実行し、出力を参照してくださいsudo su - "testuser" -c "whoami"
デビッドハーガート

@DavidHergertうん、そしてユーザー名なしでルート用のシェルを開きます。
ラースコトフ

@LarsKotthoff-わかりました。申し訳ありませんが、ユーザーのデフォルト設定がrootであるという事実ではなく、ダッシュがルートシェルになっているように聞こえます。私の地元の居住者でさえ、これについて私を混乱させました。:)
デビッドヘルガート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.