私のプロジェクトでスクリプトを実行していますが、次のコマンドが表示されます。
su - `whoami`
いくつかの基本的な質問があります。
- このコマンドは何をしますか?
- whoamiコマンド以外の「引用符の意味は何ですか?
- - それは何に使用されますか?
私はsu
これがユーザー切り替えを意味することを知っています。
答え1
これバックティック( ``
)はいコマンドの置き換え:バックティック内でコマンドを実行した結果に置き換えられます。ここで実行され、whoami
ユーザー名を印刷します。
これ-
後ろにsu
su
走るログインシェル:ログインシェルは、特定の環境設定などを最初から読み込みます。デフォルトでは、ユーザーのシェルは通常のシェルとして実行されますが、すべての操作は実行されません(リンクを参照)。
su
常に新しいユーザーセッションを開始し、最初からログインするかのようにユーザーを再認証します。外部のすべての環境変数は内部シェルから消去されます。
したがって、これはコマンドと同じです(マシンのユーザー名も " blunderboy
"と仮定します)。
su - blunderboy
これは、「blunderboyで新しいセッションを再認証し、ログインシェルを実行する」という意味です。
このコマンドの全体的な結果は、現在のユーザーとして最初から新しいセッションを開始することです。。なぜこのようなことを気にするのですか?目に見えるいくつかの副作用su
:特に新しいユーザーセッションを開始するため、ユーザーが属するグループの変更、他のユーザーまたは権限の変更も確認でき、環境変数はすべてリセットされます。通常、新しいグループにユーザーを追加することは、再度ログインした後にのみ適用されます。su
この目的のために再度ログインすると見なされるため、起動されるシェルは新しいグループをアクティブにします。
1これは単純化されていますが、この説明には十分です。