最近、いくつかの bash スクリプトに取り組んでいますが、より大きなスクリプトをどのようにセットアップする必要があるのか疑問に思い始めています。
bash スクリプトは常に現在のディレクトリで実行されるため、使用source
するにはソース スクリプトの絶対パスが必要です。
この投稿を見ましたが、一般的なユースケースであると予想していたものには複雑すぎるようです。
実行中のスクリプトと同じディレクトリにスクリプトをソースする慣用的な方法はありますか?
とを使用dirname
し$0
て、現在実行中のスクリプトの場所を特定できます (ここで doit2.sh は、元のスクリプトと同じディレクトリにあるスクリプトです)。
. $(dirname $0)/doit2.sh
36,000 のソリューションはありません。
1) 絶対パス:
source /absolute_path/script.sh # sourcing a script
. /absolute_path/script.sh # sourcing a script
/absolute_path/script.sh # executing a script
2) 相対パス:
./script.sh # when script.sh is in the current directory
./dir/script.sh # when script.sh is in the directory 'dir' which is in the current directory
../script.sh # when script.sh is in the parent directory
また、source
または. script.sh
相対パスでも使用できます。
3) エイリアスを使用:
echo "alias script='/absolute_path/script.sh'" >> ~/.bashrc
source ~/.bashrc
script # executing script.sh
4) PATH に追加:
echo "export PATH=$PATH:/absolute_path/script.sh" >> ~/.bashrc
source ~/.bashrc
script.sh # executing script.sh
また、スクリプトのソースとスクリプトの実行の違いについては、この件名を参照してください。