RedHat 6에서 bash를 사용하여 소스 스크립트 디렉토리를 얻는 방법

RedHat 6에서 bash를 사용하여 소스 스크립트 디렉토리를 얻는 방법

내가 소싱하고 있는 스크립트의 경로를 얻으려고 합니다. 나는 다음을 수행하고 있습니다 :

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

관련 정보