내가 소싱하고 있는 스크립트의 경로를 얻으려고 합니다. 나는 다음을 수행하고 있습니다 :
DIR="$(dirname "$(readlink -f "$0")")"
그럼에도 불구하고 나는 얻는다
readlink: invalid option -- 'b'
저는 RedHat 6 머신에서 bash를 사용하고 있습니다. 이 작업을 다르게 해야 할지 잘 모르겠습니다.
답변1
사용 ${BASH_SOURCE[-1]}
:
script_dir=$( dirname "$( readlink -f "${BASH_SOURCE[-1]}" )" )
이것은 현재 쉘 함수 호출 스택의 소스 파일을 포함하는 배열이며, 그 마지막 요소는 기본 스크립트의 소스 코드가 됩니다.
이는 스크립트 출처에 관계없이 작동해야 합니다 source
.
bash
사용 중인 특정 버전은 버전 4.2.1입니다. 버전 4.3에서는 배열의 음수 인덱스(배열 끝에서 참조)가 추가되었습니다. ${BASH_SOURCE[-1]}
4.3 이전 버전과 동일한 효과를 얻으려면 bash
다음을 사용하십시오.
${BASH_SOURCE[ ${#BASH_SOURCE[@]} - 1 ]}
답변2
내가 올바르게 이해했다면 다음과 같이 작동할 것입니다.
whereami=$(pwd)
echo $whereami