경로에 ./를 사용하는 것이 일반적인 Unix 도구에 적합합니까?

경로에 ./를 사용하는 것이 일반적인 Unix 도구에 적합합니까?

수년에 걸쳐 나는 ./그 앞에서 절대 경로를 점점 더 많이 사용해 왔습니다. 예를 들어:

mv ./file /target/
rm ./something/else

# compared to
mv file /target/
rm something/else

나는 웹의 더 많은 곳에서 그것을 보았으며 아마도 이것이 내가 그것을 사용하는 데 적응한 이유일 것입니다. 나는 이것이 왜 이루어졌는지 이해할 수 없는 것 같고 한동안 궁금했습니다. 아마도 이는 로컬 바이너리를 직접 호출하는 데서 비롯된 나쁜 습관일 수 있습니다../a.out

./위의 셸 예제 내용이 오래되었나요? ./사용할 이유가 있나요?일부사례? 이것을 사용하면 경로가 더 명확해 집니까?

답변1

.특히 콘텐츠가 스크립트나 프로그램인 경우 현재 디렉터리에 무언가가 있음을 명시 적 $PATH으로 지정하는 것은 나쁜 습관이 아닙니다.보안 위험으로 간주됨).

어떤 경우에는 ./필요 여부에 관계없이 경로 이름의 시작 부분에 추가합니다. 예를 들어, 아래로 find검색할 때 찾은 경로 이름에는 .항상 접두사가 붙습니다 ./.

다른 경우에는 파일 이름이 유틸리티 옵션을 방해할 수 있습니다(예: 다음을 -f사용하여 삭제하려고 할 때).

rm -f

사용

rm ./-f

다음과 같이 문제를 해결할 수 있습니다( ./-f옵션으로 간주되지 않음 rm).

rm -- -f

do( --명령줄 옵션의 끝을 나타냄).

또한 쉘 전역 변수는 *대시로 시작하는 파일로 확장될 수 있습니다. 따라서 루프는 ./*루프보다 안전합니다 ( 유틸리티에 제공된 옵션에서 구분된 알 수 없는 파일 이름을 *사용하지 않는 한 ).--

./따라서 특히 경로명이 변수에 저장되어 있고 스크립트 외부 소스에서 오는 경우에는 경로명을 사용하는 것이 좋습니다 .

관련 정보