Mac OS X의 셸 스크립트에서 절대 파일 이름을 어떻게 검색합니까? 싶습니다. 링크도 해결해야합니다. Linux에서는 다음과

현재 실행중인 스크립트 파일의 절대 파일 이름을 검색하고 싶습니다. 링크도 해결해야합니다.

Linux에서는 다음과 같이 수행됩니다.

$(readlink -mn "$0")

하지만 readlink작동하는 것 같다 매우 맥 OS X에서 다르게

나는 이것이 사용된다는 것을 읽었다.

$(realpath $0)

BSD에서도 작동하지 않습니다. Mac OS X에는이 없습니다 realpath.

어떤 생각?



답변

나는이 일을 위해 속임수를 사용합니다.

#!/bin/bash
dirname=`perl -e 'use Cwd "abs_path";print abs_path(shift)' $0`
echo $dirname

나는 단지 전체 스크립트를 펄로 작성한다고 생각할 것이다.


답변

#!/usr/bin/env bash
scriptDir="$(cd "$(dirname "$0")" && pwd -P)"

답변

이것은 심볼릭 링크의 콤보를 처리하며 파일과 폴더에서 작동합니다.

#!/usr/bin/env bash
realpath()
{
    if ! pushd $1 &> /dev/null; then
        pushd ${1##*/} &> /dev/null
        echo $( pwd -P )/${1%/*}
    else
        pwd -P
    fi
    popd > /dev/null
}

그러나 실제 경로의 상대는 지원하지 않습니다. 여기에 설명 된 변환이 필요합니다 .


답변

다른 접근법 :

# Install.
brew install coreutils

# Use the GNU variant.
grealpath --help