Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >ブログ >2016年 >シェルスクリプトでシンボリックリンクを解決しながらその絶対パスを取得するには

シェルスクリプトでシンボリックリンクを解決しながらその絶対パスを取得するには2016/10/04

シェルスクリプトで、シンボリックリンクを実体ファイルのパスに変換しながら、相対パスを絶対パスに変換するには、以下のような関数でできる。

readlinkコマンドでシンボリックリンクを再帰的に解決させる。

read_real_path() {    local cwd="$(pwd)"    local path="$1"    while [ -n "$path" ]; do        if [ "${path%/*}" != "$path" ]; then            cd "${path%/*}" # $path に含まれる最後の "/" から後ろを削除したパスにcd        fi        local name="${path##*/}" # $path に含まれる最後の "/" から後ろを name に代入        path="$(readlink "$name" || true)"    done    echo $(pwd)/$name    cd "$cwd"}# シェルスクリプト自身の絶対パスを取得する例SCRIPT_PATH="$(read_real_path $0)"echo $SCRIPT_PATH

これをちょっと修正して、シェルスクリプトファイル自身の置かれているディレクトリを絶対パスを取得する例

read_parent_dir() {    local cwd="$(pwd)"    local path="$1"    while [ -n "$path" ]; do        if [ "${path%/*}" != "$path" ]; then            cd "${path%/*}" # $path に含まれる最後の "/" から後ろを削除したパスにcd        fi        local name="${path##*/}" # $path に含まれる最後の "/" から後ろを name に代入        path="$(readlink "$name" || true)"    done    pwd    cd "$cwd"}SCRIPT_HOME="$(read_parent_dir $0)"echo $SCRIPT_HOME
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク

[8]ページ先頭

©2009-2025 Movatter.jp