LinuxのコマンドってなんでPATHを書かなくても実行できるんだ?
はじめに
最近Linuxを触っている時に、ls,cd,pwd
とかのコマンドってなんで実行ファイルまでのPATHを書かなくても実行できるんだと思ったのがこの記事を書くきっかけになりました。
目次
- 環境変数
- PATHを通す
1. 環境変数
PATHの話をする前にまずこの環境変数について触れなければなりません。
環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。 プログラムの実行時などに必要となる、利用者やコンピュータごとに内容が異なる設定値などを記録するために用いられる。(IT用語辞典 e-Words)
簡単に言えば、ユーザーごとに変数にある値を設定することができるし、コンピュータ全体にも設定することができるって感じです。
では、どのように環境変数を設定するかと言うと
$ NAME=Tanaka
$ export NAME
# or
$ export NAME=Tanaka
このようにしてLinuxでは環境変数を設定することが出来ます。
しかし、この状態では永続的には環境変数を保存することが出来ません。なのでここで~/.bash_profile
に環境変数を設定しなければいけません。
#.bash_profile
NAME='Tanaka'
export NAME
こうすることで、永続的に環境変数を設定することができます。
soruce ~/.bash_profile
とすることで、ログアウトしてログインせずに反映させることだできる。
2. PATHを通す
さて、この記事の本題であるls,pwd,cdといったLinuxのコマンドがPATHを通さずに実行することが出来るかというと、環境変数にPATHを設定しているということです。
$ echo $PATH
# 現在の変数PATHに設定している状態が表示される
# 例) /usr/bin:/usr/local/sbin など
このPATHに対して設定することでls,cd,pwdなどがPATHを通さずに使用することが出来るのです。
# ~/bash_profile
PATH="$PATH:/usr/bin"
export PATH
まとめ
普段何気なく使っていたls,cd,pwd,yum
などがPATHを通さずに使えた理由が環境変数のPTAHに通すことで使用出来ているのです。何かの実行ファイルをダウンロードしてきた時にPATHを通す処理何かはそういことです。
次回は、詳しく触れなかった~/.bash_profile
やsource
コマンドについて記事を書いていきたいと思っています。
参考資料
https://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0
https://qiita.com/Naggi-Goishi/items/2c49ea50602ea80bf015
Author And Source
この問題について(LinuxのコマンドってなんでPATHを書かなくても実行できるんだ?), 我々は、より多くの情報をここで見つけました https://qiita.com/fumiyan_propro/items/26cdd8a3204abd85f3be著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .