PATH
환경 변수에 사용자 정의 디렉터리를 포함하거나 이미 포함된 디렉터리에 사용자 정의 스크립트를 넣는 것을 주저해 왔습니다 .
그 이유는 외부 프로그램을 호출하는 바이너리가 내 사용자 정의 스크립트 중 하나와 동일한 이름을 갖고 필요한 바이너리가 컴퓨터에 존재하지 않는 (물론) 가능성이 희박한 극단적인 경우를 피하는 방법을 모르기 때문입니다. . 그래서 프로그램은 실제로 내 사용자 정의 스크립트를 호출하는데, 이는 문제만 발생시킵니다.
이는 일반적으로 래퍼 스크립트를 사용하여 수행되는 것처럼 동일한 이름의 사용자 정의 스크립트를 사용하여 바이너리를 숨기는 것과 다소 유사합니다. 그러나 이 경우에는 해당 컴퓨터에 관련 프로그램이 존재하지 않으므로(동일한 이름을 가진 사용자 정의 스크립트만) 변수에서 사용자 정의 스크립트의 위치는 PATH
전혀 중요하지 않습니다.
변수가 사용되는 디렉토리에 사용자 정의 스크립트를 저장하지 않는 것 외에 이를 방지할 수 있는 방법이 있습니까 PATH
? 염두에 두어야 할 유일한 가능성은 항상 절대 경로를 사용하여 사용자 정의 스크립트를 호출하는 것입니다.
답변1
세 가지 솔루션:
수정 없이 절대 경로를 사용하여 사용자 정의 스크립트를 호출하려면 항상 권장 사항을 따르십시오
$PATH
.이렇게 하면 필요하다는 것을 알 때 스크립트를 호출할 수 있으며 스크립트가 실수로 다른 유틸리티를 "숨기지" 않게 됩니다.
$PATH
사용자 정의 스크립트에 대한 경로가 표준 디렉토리 및 타사 소프트웨어가 포함된 디렉토리 경로 뒤 의 끝에 있는지 확인하십시오 .단점은 다른 유틸리티와 이름이 같은 스크립트가 있는 경우 자신의 스크립트 대신 해당 유틸리티를 호출하게 된다는 것입니다. 이것은 당신의 우려와 반대입니다.
스크립트에 고유한 이름이 있는지 확인하고 이전 사항을 따르세요.
시스템 유틸리티가 거의 없습니다(그리고기준예를 들어 유틸리티 never)는
.sh
파일 이름 접미사로 사용됩니다.wally-
자신의 스크립트 에 대한 접두사(wally-backup.sh
또는 ) 와 같은 "네임스페이스" 구축을 고려할 수도 있습니다wally-getmail
.
일반적으로 표준 Unix 유틸리티의 이름을 알고 사용을 피해야 합니다( test
예: 사용자 정의 유틸리티에 대한 나쁜 이름입니다). 표준 유틸리티 이름 목록여기에서 찾을 수 있습니다. 마찬가지로, 특수 내장 유틸리티의 이름을 사용자 정의 스크립트에 사용해서는 안 됩니다. 이것들은 다음에 나열되어 있습니다.이 링크 끝.
수정하신 경우 $PATH
수정해주세요.몰래, 즉 로그인한 상태에서 권한이 없는 사용자로만 사용할 수 있습니다. 다중 사용자 시스템의 시스템 관리자이고 스크립트가 실제로 다른 사람이 사용하는 경우가 아니면 시스템 전체에서 수정하지 마십시오(그리고 $PATH
어떤 이유로든 자신의 스크립트를 수정하는 것이 번거로울 수 있습니다). 시스템을 수정하는 경우 $PATH
"섀도우 문제"가 발생하지 않는지 반드시 확인하십시오. 그렇지 않으면 $PATH
사용 위치에 따라 기본 시스템 기능이 손상될 수 있습니다.