tcl 환경에서 작업할 때,일단 디렉토리에 CD를 넣으면, 내가 지정한 경로가 해당 경로에 대한 심볼릭 링크이더라도 실행 여부에 관계없이비밀번호 -L또는비밀번호 -P, 모두 절대 경로를 반환합니다. 다른 사용자가 스크립트를 실행할 때 자신의 작업 공간으로 전환하도록 사용자별 작업 공간 경로를 변수 이름으로 바꾸려고 하기 때문에 이것은 나에게 번거로운 작업입니다. 그러나 $::env(WORK) 시스템은 경로에 대한 심볼릭 링크를 반환하는 반면 pwd 명령은 절대 경로를 반환하므로 sed 명령을 실행할 수 없습니다.
예를 들어,
stcl> cd $::env(WORK)
stcl> puts [format "cd %s" [exec echo [pwd] | sed "s,$::env(WORK),\$WORK,g"]]
코드에서 원하는 것은 "cd $WORK"를 인쇄하는 것이지만 pwd는 절대 경로를 반환하므로 pwd -L을 사용해도 sed 명령과 일치할 수 없으므로 문자열을 바꿀 수 없습니다.
답변1
Tcl은 cd와 pwd에 대한 제어권을 제공하지 않는 것 같습니다.
또 다른 접근 방식: WORK 환경 변수에서 심볼릭 링크를 확인하고 비교합니다.저것비밀번호를 입력하려면:
format {cd "%s"} [expr {[pwd] eq [file normalize $::env(WORK)] ? {$WORK} : [pwd]}]