Ubuntuでコマンドの場所(フルパス)を調べる方法です。
whichでコマンドのフルパスを表示
「which」はコマンドのフルパスを表示してくれるコマンドです。
which コマンド
試しに「ls」を指定して「which」コマンドを実行すると、「ls」コマンドのフルパスが表示されます。
$ which ls /usr/bin/ls
-a オプション
「-a」オプションを使用すると、同じコマンドが複数パスに存在する場合、全てのパスを表示してくれます。
$ which -a ls /usr/bin/ls /bin/ls
パスの優先順位
パスには優先順位があり、先に設定されているものが優先的に適用されます。
$ env | grep PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
「/usr/bin/ls」と「/bin/ls」の場合、「/usr/bin」の方が先に設定されているので「ls」と実行すると「/usr/bin/ls」の方が選択されます。
「-a」オプションをつけずに「which ls」と実行すると「/usr/bin/ls」が表示されるのも、それが理由となります。
ちなみに、「/bin」は「/usr/bin」へのシンボリックリンクとなっているので、結局は「/usr/bin/ls」と「/bin/ls」は同じものだったりします。
$ ls -l /bin lrwxrwxrwx 1 root root 7 Apr 22 2024 /bin -> usr/bin
「sha256sum」でハッシュ値を比較すると、両方とも同じであることが確認できます。
$ sha256sum /usr/bin/ls 1bea8094b78a3910345d80af3d182390fda07ae5788352651eb7773505dc39af /usr/bin/ls $ sha256sum /bin/ls 1bea8094b78a3910345d80af3d182390fda07ae5788352651eb7773505dc39af /bin/ls
コメント