私はbashスクリプトセットを持っており、各スクリプトの先頭で選択される "setup.sh"スクリプトにいくつかの一般的なシェルオプションと変数宣言を入れたいと思います。
私のディレクトリ構造は次のとおりです。
├── includes
│ └── setup.sh
├
└── server_config
├── build_server_core.sh
├── install_fail2ban.sh
スクリプトは他のシステムや環境で実行できるため、単にハードコードされたパスを使用することはできません。setup.sh
source
私が実行しているディレクトリとは異なるディレクトリにあるスクリプトに対する1行のコマンドはありますか?
答え1
まずスクリプト自体のディレクトリを取得し、次の相対パスを使用します。
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source "$DIR/../includes/setup.sh"
正しいディレクトリを見つける方法の詳細については、以下を確認してください。https://stackoverflow.com/questions/59895
答え2
1行で:二重ネストされたディレクトリ名も親エントリを取得します。(インスピレーションここ)
source $( dirname $( dirname "${BASH_SOURCE[0]}" ) )/_helperlib.sh
答え3
echo "$( echo $(cd ../ && pwd) )/includes/setup.sh"
または
ParDir="$( echo $(cd ../ && pwd) )/includes/setup.sh"
echo $ParDir