Unix/POSIX/Linux 시스템에서는 TMPDIR 변수를 통해 임시 디렉터리를 설정할 수 있습니다.위키피디아 Open Group 사양에 대한 참조이것을 언급하십시오.
이것은 나에게 답을 남기지 않습니다. 여기에 슬래시가 포함되어야 합니까? (즉, TMPDIR="/foo/bar"
또는 TMPDIR="/foo/bar/"
).
온라인에서 찾은 예를 보면 후행 슬래시가 더 일반적이라고 생각되지만 명확한 답변을 원합니다. 이것이 어디에서나 표준화/명확화되었습니까?
답변1
끝에 슬래시를 추가하는 것과 추가하지 않는 것 사이에는 큰 차이가 없습니다. 후행 슬래시를 사용하면 유사하게 구성된 경우 $TMPDIR/something
이중 슬래시가 포함된 경로를 얻을 수 있지만 이는 효과가 거의 또는 전혀 없습니다. 경로 이름 시작 부분의 이중 슬래시는 TMPDIR=/
이것이 차이가 있는 경우에만 특별히 해석될 수 있습니다.//foo/bar는 /foo/bar와 어떤 시스템에서 다릅니까?.
$TMPDIR
디렉토리가 명명된 기호 링크에 의해 참조되고 경로 이름이 슬래시로 끝나는 경우 링크를 감지할 수 없습니다. 즉, 다른 곳의 심볼릭 링크에 TMPDIR=/tmp/dir/
and 를 사용하면 심볼릭 링크가 역참조되기 때문에 항상 false가 됩니다./tmp/dir
[ -L "$TMPDIR" ]
일부 유틸리티는 후행 슬래시 문자가 없는 경우와 다르게 주어진 인수를 해석할 수 있습니다. 이것이 문제인 경우 $TMPDIR/.
인수에 후행 슬래시가 없는지 확인해야 하거나 후행 슬래시가 필요한 경우 또는 를 사용하세요. 교체는 후행 슬래시를 제거합니다(있는 경우).${TMPDIR%/}
$TMPDIR/
${TMPDIR%/}/
${TMPDIR%/}
많은 종류의후행 슬래시).
POSIX는 후행 슬래시 사용을 강제하지 않습니다. 결국 개인 취향에 따라 다르겠지만 일관성을 유지하는 것이 도움이 됩니다. 개인적으로 저는 일반적으로 경로 이름이 포함된 변수 끝에 슬래시를 추가하지 않습니다.
또한 관련:
답변2
Artem의 10년 경험을 추가하면 저는 그의 의견에 전적으로 동의합니다. 물론 파일 이름을 $TMPDIR에 맹목적으로 연결하는 잘못 작성된 스크립트를 사용하지 않도록 주의하십시오.
또한 후행 슬래시가 있는 디렉토리 이름(디렉토리 아래의 파일)을 후행 슬래시가 없는 디렉토리 이름(디렉토리 자체)과 다르게 해석하는 rsync와 같은 특정 유틸리티를 사용할 때도 주의해야 합니다.
마지막으로 tmp 디렉토리는 심볼릭 링크될 수 있습니다.
후행 슬래시의 첫 번째 지점은 기호 링크를 역참조하는 것입니다. 즉, DIRNAME이 기호 링크인 경우 DIRNAME/이 기호 링크가 가리키는 디렉터리를 참조할 때 DIRNAME은 기호 링크를 참조합니다.