/A/B/c.sh가 /X/Y/c.sh에 심볼릭 링크되어 있다고 가정합니다.
- c.sh에 "./SOMETHING" 명령이 있으면 "."은 /A/B/ 또는 /X/Y/?를 의미합니다.
- 하드 링크는 어떻습니까?
답변1
.
두 경우 모두 이는 실제로 현재 작업 디렉토리이며 스크립트가 저장된 디렉토리와는 아무 관련이 없습니다.
[/tmp] $ echo "realpath ." > test.sh && chmod +x test.sh
[/tmp] $ /tmp/test.sh
/tmp
[/tmp] $ cd /usr/bin
[/usr/bin] $ /tmp/test.sh
/usr/bin
답변2
저는 Michael의 의견에 동의합니다. 하지만 중요한 것은 $0
매개변수입니다.
$0
이름을 조사 하고 사용된 기호 이름에 따라 다양한 작업을 수행하는 스크립트를 본 적이 있습니다 .
답변3
이 예의 표현은 .
현재 직접적으로 작동합니다. 연결된 경로는 관련이 없습니다. 링크 유형에 관계없이 실행이나 편집을 위해 파일을 참조하는 것은 링크가 여러 개 있더라도 기본적으로 동일합니다.차이점그들 사이에.
답변4
이것은 당신이 요청한 것이 아니지만 당신이 찾고 있는 것일 수도 있습니다...
이를 사용하여 "$0"
기본 스크립트와 동일한 디렉터리에 있는 하위 스크립트를 찾을 수 있습니다.
MYPATH="$(realpath "$0")"
MYDIR="$(dirname "$MYPATH")"
"$MYDIR/otherscript" ...
기본 스크립트가 심볼릭 링크되어 있으므로 $0
먼저 를 사용해야 합니다 realpath
. 비록 인수에 디렉터리 부분이 없으면 반환되지만 dirname
이 경우 인수는 절대 경로로 변환되었습니다..
realpath