왜 쉘 스크립트에서 사소한 문자를 피해야합니까? 탈출이 코드 전체에서 반복되기 때문에

방금 레거시 쉘 스크립트 (Solaris에서 이전 ksh88로 작성 됨)를 열고 코드 전체에서 다음이 반복되는 것을 발견했습니다.

[ -f $myfile ] && \rm -f $myfile

탈출 백 슬래시는 나를 이상하게 생각합니다.

이런 종류의 (명백히 쓸모없는) 탈출이 코드 전체에서 반복되기 때문에 의도적이라는 것을 알고 있습니다. 원래의 저자는 오래 전에 사라져서 그에게 연락을 요청할 수 없습니다.

이것은 단순히 저자의 재미있는 특유성입니까, 아니면 어느 시점에서 의미가있는 일종의 더 이상 사용되지 않는 모범 사례입니까? 아니면 실제로 권장되는 방법이며 어쩌면 뭔가를 놓치고 있습니까?



답변

별명 보호에 사용됩니다.

$ ls
.bashrc  a  b

$ alias ls
alias ls='ls $LS_OPTIONS'

$ \ls
a   b

답변

일반적으로 앨리어싱을 통해 달성되는 rm에 대한 일부 보호 장치를 배치하는 것이 좋습니다. 다중 사용자 환경에서는 이러한 보호 기능이 많이 적용되는 경우가 많습니다.

쉘 스크립팅 전문가의 경우 이러한 보호 기능을 사용하지 않도록 설정하는 것이 유용한 경우가 종종 있습니다. 언급했듯이 이것은 명령 앞에 a를 붙여서 수행됩니다 \.

@Sorpigal의 제안과는 달리, 스크립트가 사용자에게 보호 수단을 제공하지 못하도록 별칭 설정을 해제하지 않는 것이 좋습니다. 또한 rm이 이유에 따라 보조 경로에있을 수 있으므로 전체 경로를 사용하는 것도 현명하지 않습니다 (예 : GNU rm vs. BSD rm). 엄격한 경로로이를 재정의하는 것은 많은 아키텍처, 환경 및 사용자를 확장하고 처리하기 위해 PATH를 갖는 목적을 무효화하는 것입니다.