Linux コマンドってどうやって実行されてるの?【Part-2】
Part-1 の続きから進めていきます👷♀️
Linux コマンドのファイルはどこにあるの?
では、試しにディレクトリの中に何があるのか確認する時に使用する ls
コマンドがどこにあるのか調べてみましょう。
$ which ls /bin/ls
どうやら bin
というディレクトリの中に実行ファイルがあるようです👀 ディレクトリを調べて見ると、ls
がありました。
しかし、なぜ異なるディレクトリにある実行ファイルがどこからでも呼び出せるのか? とみなさん疑問に思っていることと思います。
なぜコマンドが実行できるの?
この /bin
ディレクトリにあるコマンドがなぜ、いろいろな場所で使用できるようになっているのでしょうか?
答えは、環境変数Path があるからです🐧
では、実際に環境変数 PATH
に何が含まれているのか echo
コマンドで確認してみます。
$ echo $PATH /Users/otakayamato/Library/Android/sdk/platform-tools/:/Users/otakayamato/.nodebrew/current/bin:/Users/otakayamato/.nvm/versions/node/v13.11.0/bin:/Users/otakayamato/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/xxxxx/.nodebrew/current/bin:/Users/otakayamato/.nodebrew/current/bin
上記のように、Path に :/bin:
が含まれているのが確認できました🎉 つまり、コマンドを実行した時に、PATH
に含まれているディレクトリをシステムが確認を行い、実行可能ファイルが存在する場合にコマンドを実行しているということが分かります。
特定のディレクトリにあるコマンドを使用可能にするには?
前のセクションで調べたことが理解できると、特定のディレクトリにある実行ファイルをどこからでも呼び出せるように設定することもできるようになります。
ターミナルを新しく開いた時に呼ばれる(bash shell の場合)、bash_profile
の中に PATH
を追加するように宣言できれば、特定のディレクトリに存在するコマンドを実行することができるようになります。例えば、下記のように設定することで、/Users/otakayamato/Library/Android/sdk/platform-tools/
の中にあるコマンドがどこからでも事項できるようになります。また、export
コマンドで一時的にパスを通すこともできますが、bash_profile
に設定されていない場合は、ターミナルを開き直した時に登録した PATH の内容はリセットされます。
export PATH=/Users/otakayamato/Library/Android/sdk/platform-tools/:$PATH
最後に
前回の Linux の概要に続き、少しずつ Linux コマンドについての理解ができてきましたね。また、機会が会ったらさらに深堀していこうかと思います。それではまた明日👷♀️