絶対ディレクトリを探す

絶対ディレクトリを探す

シナリオは次のとおりです。

foo/
> data/
> stuff/
> scripts/ -> /.../generic/scripts

任意の場所(別のフォルダまたはフォルダ内)から呼び出されたときにfoo/scripts/bar.shスクリプトを使用できるようにしたいですfoo/datafoo/stuff

しかし、ちょうど使用すると、foo_dir='dirname $0'/..シンボリックリンクが指すディレクトリに移動します! (そしてgeneric代わりに入手してくださいfoo!)

一部のパターンを使用して最後を食べると、$0ディレクトリ内でスクリプトを呼び出すことができるため、機能しません。

だから結局私が見つけた唯一のことは、次のような非常に醜いものでした。

dir=`dirname $0`
cd $dir
dir=`pwd | sed -r 's_/[^/]+$__'`
cd -

...しかし、もっと良い方法があると確信しています。

私が使用するもの:

dir=$( dirname $( cd `dirname $0`; pwd ) )

完璧かどうかはわかりませんが、期待したほどの性能を発揮するようです。

ベストアンサー1

次の1行を使用できます。

DIR="$(cd "$( dirname "$0" )" && pwd )"

おすすめ記事