私がログインしたときusername
、なぜ
sudo ls ~
代わりに何が表示されますか?コマンドがrootとして実行されているとします。この場合、ルートはを表します。/home/username
/root
sudo
~
/root
さらなる説明:
また、そのコマンドを実行しsu
てから実行すると、ls ~
表示される内容が得られます/root
。だから私はこれをするのがsudo ls ~
。
別の例として、フラグ付きの一部のコマンドは--user
実行時にユーザーをrootとして解釈しますsudo
。たとえば、はのディレクトリにインストールし、はのディレクトリにインストールします。最後のコマンドを実行することはお勧めできません。私は私が説明した機能を表示するためにこのコマンドを使用しました。pip install --user packagename
/home/username
sudo pip install --user packagename
/root
答え1
~
実行する前にシェルが展開されますsudo
。以下を使用してこれを確認できますset -x
。
$ set -x
$ sudo ls ~
+ sudo ls /home/skitt
これは、実際に実行されたコマンドが拡張時に現在のユーザーを使用してホームディレクトリを拡張したことを示します。
ターゲットユーザーのホームディレクトリを表示するには、次のことを延期する必要があります。チルダ拡張:
sudo bash -c 'ls ~'