date
一般ユーザーのコマンドのスクリプトの場所が表示され、次のように表示されます。
which date
/bin/date
ただし、ルートで同じコマンドを実行すると出力が表示されます/usr/bin/date
。なぜこれですか?
答え1
which date
異なるユーザーに対して異なる結果が生成されると、root
そのユーザーの結果も異なる値を持つことができますPATH
。一般ユーザーは/bin
以前/usr/bin
(または/usr/bin
まったくなし)と以前root
(またはまったくなし)を経験しました。/usr/bin/
/bin
/bin
次のコマンドを実行してこれを確認できます。
echo ${PATH}
root
root以外のユーザーとして。
このPATH
変数は、絶対パスが指定されていないときにシェルがコマンドを検索するコロンで区切られたディレクトリのリストです。シェルは、リストされた順序で左から右にこれらのディレクトリを検索します。シェルがディレクトリ内のコマンドを見つけたら、それを実行します。このwhich
コマンドは同様の巡回を実行し、見つかった最初の一致を報告します。
答え2
$PATH
現在ログインしているユーザーによって異なります。スクリプトが複数のディレクトリにある場合は、最初に見つかったディレクトリが使用されます。この場合、$PATH
ルートは次のようになります。
PATH="/usr/bin:/bin:...
ユーザーには次のように表示されます。
PATH="/bin...