shellスクリプト自体のディレクトリのShellスクリプトを取得して共有します。

1241 ワード

先日書いた七牛の参加デモは、バックで簡単にインストールできるスクリプトを書きました。パスに関する判断に触れました。stackover flowから、自分の実践を加えて整理してみます。
簡単版
以下は最も簡単な実現で、大多数の問題を解決できます。欠陥はソフトリンクに対して表示されているのはソフトリンクのあるディレクトリです。
ライン:false

#!/bin/bash
DIR="$( cd "$( dirname "$0"  )" && pwd  )"
完全版
このバージョンは、ln-s target linkNameを使用してソフトリンクを作成するために、実際のスクリプトに正しくアクセスできない問題を解決しました。
ライン:false

#!/bin/bash
SOURCE="$0"
while [ -h "$SOURCE"  ]; do # resolve $SOURCE until the file is no longer a symlink
    DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd  )"
    SOURCE="$(readlink "$SOURCE")"
    [[ $SOURCE != /*  ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd  )"