いくつかのbashスクリプトを含むいくつかのディレクトリと、場合によっては各マシンの異なるディレクトリにある複数のマシンに展開されるサポートファイルで構成されるユーティリティがあります。スクリプトはそれ自体に関連するパスを参照できる必要があるため、現在実行中のファイルへのパスを取得できる必要があります。
dirname $0
スクリプトが直接呼び出されたときに完全に機能するイディオムを知っています。残念ながら、まったく異なるディレクトリからこれらのスクリプトへのシンボリックリンクを作成し、依然として相対パスロジックを機能させたいという要望があります。
全体的な乾燥構造の例は次のとおりです。
/
|-usr/local/lib
| |-foo
| | |-bin
| | | |-script.sh
| | |-res
| | | |-resource_file.txt
|-home/mike/bin
| |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh)
またはによって呼び出されるかどうか/usr/local/lib/foo/res/resource_file.txt
からどのように確実に参照できますか?script.sh
/usr/local/lib/foo/bin/script.sh
~mike/bin/link_to_script