왜 쉘 스크립트에서 사소한 문자를 피해야합니까?


23

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

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

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

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

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


3
그럴만한 이유가 있지만이 방법을 사용하여 스크립트에서 별칭을 보호하는 것이 "권장"이라고하는 것은 아닙니다. 스크립트 상단에있는 별칭을 지우거나 rm전체 경로 로 호출하면 충분합니다.
Sorpigal

답변:



5

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

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

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


3
일반적 rm이기는하지만 앨리어싱 은 좋지는 않지만 매우 가난하고 불행한 연습입니다.
jlliagre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.