シェルスクリプトの実行方法
たまに忘れることがあるので、シェルスクリプトの実行方法と特徴について備忘録。
シェルスクリプトは3つの実行方法がある。各実行方法によって動作が異なる。
- ファイル名で実行
- シェルの引数として実行
source
コマンドで実行
1. ファイル名で実行
- シバンを解釈して実行される
- サブシェルが起動される
- ファイルに実行権限が必要
次のように実行する。シバンを解釈して実行される。
$ ./shell_script.sh
例えば、シバンに#!bin/bash -x
と記述されていたら、実質的には/bin/bash -x ./shell_script.sh
と実行しているのと同じ。
2. シェルの引数として実行
- シバンが書いてあっても解釈されない
- サブシェルが起動される
- ファイルに実行権限は不要
シバンは解釈されない。もちろんシバンに記述したオプションも解釈されない。
3. source
コマンドで実行
- シバンが書いてあっても解釈されない
- カレントシェルで実行される(サブシェルは起動されない)
- ファイルに実行権限は不要
カレントシェルで実行するので、エイリアスや環境変数といったシェル環境の影響を受ける。また、カレントシェルに影響も与える。(カレントシェルで実行しているので当然)
~/.bashrc
や~/.bash_profile
を更新したときに環境に反映させるのに使ったり、異なるシェルスクリプト間で、同一の値を参照したい場合に使ったりする。