Как получить абсолютный путь к сценарию оболочки на MacOS? - PullRequest
30 голосов
/ 22 апреля 2011

readlink -f не существует в MacOS. Единственное работающее решение для Mac OS, которое мне удалось найти в сети, выглядит так:

if [[ $(echo $0 | awk '/^\//') == $0 ]]; then
    ABSPATH=$(dirname $0)
else
    ABSPATH=$PWD/$(dirname $0)
fi

Кто-нибудь может предложить что-нибудь более изящное для этой, казалось бы, тривиальной задачи?

Ответы [ 11 ]

0 голосов
/ 22 апреля 2011

это то, что я использую, может понадобиться настройка здесь или там

abspath () 
{ 
    case "${1}" in 
        [./]*)
            local ABSPATH="$(cd ${1%/*}; pwd)/${1##*/}"
            echo "${ABSPATH/\/\///}"
        ;;
        *)
            echo "${PWD}/${1}"
        ;;
    esac
}

Это для любого файла - и, конечно, вы можете просто вызвать его как abspath ${0}

В первом случае речь идет об относительных путях путем перехода к пути и определения его в pwd

Во втором случае речь идет о локальном файле (где $ {1 ## /} не сработал)

Это НЕ пытается отменить символические ссылки!

...