iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Linux コマンドってどうやって実行されてるの?【Part-2】

Part-1 の続きから進めていきます👷‍♀️

Linux コマンドのファイルはどこにあるの?

では、試しにディレクトリの中に何があるのか確認する時に使用する ls コマンドがどこにあるのか調べてみましょう。

$ which ls
/bin/ls

どうやら bin というディレクトリの中に実行ファイルがあるようです👀 ディレクトリを調べて見ると、ls がありました。

f:id:yum_fishing:20201111184641p:plain

しかし、なぜ異なるディレクトリにある実行ファイルがどこからでも呼び出せるのか? とみなさん疑問に思っていることと思います。

なぜコマンドが実行できるの?

この /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 コマンドについての理解ができてきましたね。また、機会が会ったらさらに深堀していこうかと思います。それではまた明日👷‍♀️

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com