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