$PATHを通してシェルスクリプトを実行してみる!

2023/11/18に公開

$PATHを通すとは?

環境変数PATHにスクリプトのディレクトリパスを登録すること

コマンドの実行ファイルやシェルスクリプトが存在するディレクトリなどを登録する

$PATHを通しておくと、どうなるのか?

いちいちディレクトリパスを指定しなくても、コマンドの実行ファイルやシェルスクリプトを実行できる

$PATH環境変数に登録されている一覧をみてみよう

echo $PATHで表示することができる

% echo $PATH
/opt/homebrew/opt/go@1.19/bin:/opt/....

whichコマンドで普段使用しているコマンドのディレクトリを検索

whichコマンドは、環境変数PATHに登録されているディレクトリにある実行ファイルを検索できる

% which ls
/bin/ls

実際に$PATHを通してシェルスクリプトを実行してみる

  • 実行環境
    • OS:mac

1. シェルスクリプト作成

  • シェルスクリプトを作成する適当なディレクトリに移動
% cd Documents/test
  • シェルスクリプトを作成
% echo 'echo "Hello, World!"' > hello.sh
  • シェルスクリプトの実行権限を変更
% chmod 700 hello.sh

2. シェルスクリプトのあるディレクトリを$PATH環境変数に登録

  • シェルスクリプトのあるディレクトリを確認
% pwd
/Users/honda10(ユーザー名)/Documents/test
  • シェルスクリプトのあるディレクトリを$PATH環境変数に登録
% export PATH=$PATH:/Users/honda10(ユーザー名)/Documents/test
  • $PATH環境変数に登録されたことを確認
% echo $PATH | tr ':' '\n'
...
/Users/honda10(ユーザー名)/Documents/test

3. シェルスクリプトを実行してみよう

  • シェルスクリプトのないディレクトリに移動
% cd /
  • シェルスクリプトを実行
% hello.sh
Hello, World!

4. 補足

  • 今回$PATH環境変数に登録したやり方は、一時的に登録しているため、ターミナルを終了すると登録削除される
% export PATH=$PATH:/Users/honda10(ユーザー名)/Documents/test
  • 永続的に$PATH環境変数に登録する場合は以下のサイトに記載されている
    • //$PATH環境変数を管理しているファイル。
      • ~/zshの場合:.zshrc
      • ~/bashの場合:.bash_profile
    • 通したいパス:$PATHを記載して、sourceコマンドでPATH環境変数を反映させる
      • ~/zshの場合:% source ~/.zshrc
      • ~/bashの場合::% source ~/.bash_profile

https://amateur-engineer.com/mac-path-zsh/

  • PATHの優先順位とは
    • PATHには優先順位があります。
    • $PATH環境変数を管理しているファイルで、PATHの優先順位もここで変えることができる
      • ~/zshの場合:.zshrc
      • ~/bashの場合:.bash_profile
    • コマンドはPATHの左に記述されているディレクトリから順番に探していきます。そして、コマンドが複数ある場合は、先に見つけたコマンドを実行される

Discussion