Open ma96o opened 2 years ago
Linux の PATH について.一度プログラミングを始めた頃に学んだが,そこからなんとなくの理解でこれまでやってきた.今日バイナリファイルをダウンロードして,そのコマンドのパスを通すという作業をしたので,改めて整理しておこうと思う.
そもそも「パスを通す」などで用いられる"パス"は,"コマンドサーチパス"の略称である.
Linux では通常,コマンドを実行するには $ /usr/bin/passwd のように,フルパスを指定する必要がある.しかしそれは面倒である.
$ /usr/bin/passwd
そこで,Linus のシェルは,フルパスを指定しなくても,設定されたディレクトリにコマンドの実行ファイルを探しにいくようになっている.このとき「シェルがコマンドのバイナリファイルを探しに行くディレクトリを設定する」ことを「パスを通す」という.言い換えれば,コマンドサーチパスを設定するという意味になる.
コマンドサーチパスは,PATH という環境変数に格納されている.$ echo $PATH を実行すれば,設定されているパスを確認できる.PATHには,通したいパスを「:」区切りで指定する.
PATH
$ echo $PATH
以下のような出力であれば,/usr/local/bin, /usr/bin, /bin にパスが通っていることが分かる.
/usr/local/bin
/usr/bin
/bin
$ echo $PATH /usr/local/bin:/usr/bin:/bin
追加したいときは,$ export PATH=$PATH:/usr/sample のように,現在の $PATH に「:」で繋げて通したいパスを指定すれば良い.また,同名のファイルが複数のディレクトリにあった場合,PATH に定義されたディレクトリのうち先頭から優先してファイルを実行するので注意が必要.また,セキュリティの観点からも余計なディレクトリを追加せず(パスを通さず),安全なディレクトリに絞って指定することが重要である.
$ export PATH=$PATH:/usr/sample
$PATH
Linux の PATH について.一度プログラミングを始めた頃に学んだが,そこからなんとなくの理解でこれまでやってきた.今日バイナリファイルをダウンロードして,そのコマンドのパスを通すという作業をしたので,改めて整理しておこうと思う.
そもそも「パスを通す」などで用いられる"パス"は,"コマンドサーチパス"の略称である.
Linux では通常,コマンドを実行するには
$ /usr/bin/passwd
のように,フルパスを指定する必要がある.しかしそれは面倒である.そこで,Linus のシェルは,フルパスを指定しなくても,設定されたディレクトリにコマンドの実行ファイルを探しにいくようになっている.このとき「シェルがコマンドのバイナリファイルを探しに行くディレクトリを設定する」ことを「パスを通す」という.言い換えれば,コマンドサーチパスを設定するという意味になる.
コマンドサーチパスは,
PATH
という環境変数に格納されている.$ echo $PATH
を実行すれば,設定されているパスを確認できる.PATH
には,通したいパスを「:」区切りで指定する.以下のような出力であれば,
/usr/local/bin
,/usr/bin
,/bin
にパスが通っていることが分かる.追加したいときは,
$ export PATH=$PATH:/usr/sample
のように,現在の$PATH
に「:」で繋げて通したいパスを指定すれば良い.また,同名のファイルが複数のディレクトリにあった場合,PATH
に定義されたディレクトリのうち先頭から優先してファイルを実行するので注意が必要.また,セキュリティの観点からも余計なディレクトリを追加せず(パスを通さず),安全なディレクトリに絞って指定することが重要である.