내가 실행하는 일부 스크립트는 다른 시스템에서 호스팅되는 CIFS 파일 시스템에 있습니다. 네트워크를 통해 파일 시스템을 마운트하고 $PATH에 스크립트의 원격 위치를 추가했습니다. 정상적인 조건에서는 정상적으로 작동합니다. 그러나 원격 컴퓨터가 어떤 이유로 오프라인 상태가 되거나 정지되면 모든 탭 완료 또는 명령 입력이 원격 호스트에서 프로그램을 찾을 수 없도록 차단하므로 명령줄 사용이 끔찍해질 수 있습니다. 셸이 시작되면 새 터미널 창을 여는 것도 중단됩니다.
$PATH 조회 메커니즘을 유용하게 유지하면서 이 문제를 개선할 수 있는 좋은 방법이 있습니까?
답변1
해결 방법은 로컬 디렉터리에 여러 개의 래퍼 스크립트를 만들어 원격 디렉터리 대신 검색 경로에 넣는 것입니다. 이것은 만병통치약이 아닙니다. 원격 디렉터리의 내용이 변경될 때마다 래퍼를 업데이트해야 합니다. 그러나 이 방법을 사용하면 프로그램을 실행하지 않는 한 원격 파일에 액세스할 수 없습니다.
완료는 때때로 파일이 실행 가능한지 확인하기 때문에 래퍼 스크립트가 아닌 심볼릭 링크가 필요합니다. 이는 stat
파일에 대한 호출을 의미합니다. 그러나 모든 래퍼는 단일 실행 파일에 대한 심볼릭 링크가 될 수 있습니다.
다음 내용을 포함하는 로컬 디렉터리와
~/remote-scripts
실행 파일을 만듭니다.~/remote-scripts/.remote-wrapper
#!/bin/sh exec "/remote/path/bin/${0##*/}" "$@"
업데이트하려면
~/remote-scripts
다음 코드 조각을 실행하세요.find ~/remote-scripts -type l -exec rm {} + for x in /remote/path/bin/*; do ln -s .remote-wrapper ~/remote-scripts/"${x##*/}"; done
.
~/remote-scripts
PATH