답변:
당신은 자신의 질문에 정확하게 대답했습니다. 그것이 바로 도트가 길에 있지 않은 이유
입니다. 유치한 바이러스 또는 정직한 실수로부터 보호하십시오.
물론 이것은 매우 불충분하고 쓸모없는 바이러스 백신 조치이며 경로에 점을 추가하는 것을 막는 것은 없습니다.
-rf
디렉토리 의 고독한 파일 은 아닙니다 ( rm *
흥미 롭습니다) ;-)
-rf
처음에 지었습니까? ;)
죄송합니다. 선택한 답변에 대한 의견 양식으로이 질문을하고 싶지만 아직 수퍼 유저에 대한 담당자는 없습니다.
보안 답변은 의미가 있지만 "." 마지막으로 PATH에서 쉘이 실행 파일을 검색 할 때 현재 디렉토리를 마지막으로 보지 않아야하므로 보안 위험을 줄일 수 있습니까? $ PATH를 순서대로 검색하면 ./ls를 찾기 전에 / bin / ls를 찾습니다.
그래서 "."를 넣는 것이 얼마나 안전하지 않은가. $ PATH 환경 변수의 끝에?
내가 제안한대로 작동합니다. 내가 테스트 한 방법은 다음과 같습니다.
먼저 "."를 추가하십시오. PATH 환경 변수의 끝에.
그런 다음 ~ / dir1 / dir2 / test_which.rb와 같은 일부 디렉토리에 다음 파일을 넣으십시오.
#!/your/path/to/ruby
puts "this file is from the current directory"
이 파일을 /usr/bin/test_which.rb에 두십시오.
#!/your/path/to/ruby
puts "this file is at /usr/bin/test_which.rb"
실행 가능하도록 파일을 chmod + x해야합니다.
이제 디렉토리를 ~ / dir1 / dir2로 변경하고 test_which.rb를 실행하면 결과가 나타납니다.
this file is at /usr/bin/test_which.rb
실제로 "어디에서 test_which.rb"를 실행하면보고해야합니다.
/usr/bin/test_which.rb
다음을 입력하여 현재 디렉토리에서 파일을 계속 실행할 수 있습니다.
./test_which.rb
dc
하거나 sl
또는 sduo
쉘에서, 그리고 "명령을 찾을 수 없습니다"로 저장되었습니다. 이제까지.
ls
없애기 위해 선호하는 (컬러 출력 등) 구성을 가지고 있습니다 l
.
'.'이있는 보안 위험 이상의 것 PATH에서 명령 실행이 의도 한대로 작동하도록하는 것은 거의 불가능합니다. 임의의 이름을 가진 수천 개의 파일을 포함하는 거대한 디렉토리에서 'zip'과 같은 명령을 실행하는 것을 고려하십시오. 그중 하나가 실제로 'zip'이라는 이름의 가능성은 무시할 수 없으며 이해하기 매우 어려운 오류로 이어질 수 있습니다 (실제로는 파일은 실행 가능해야하지만 발생할 수 있음).
특히 이것은 사용자의 PATH 변수를 유지하는 스크립트를 작성할 때 적용됩니다. 잘 작성된 스크립트는 공백이 있거나 이름이 '-'로 시작하는 파일 이름과 같은 모든 경우를 처리해야합니다. 그러나 시스템 명령 대신 현재 디렉토리의 파일이 실행되는 것을 방지하는 것은 실용적이지 않습니다 ...
ls
있을 때/usr/bin/ls
와./ls
없을 때를 알고 싶어 합니다..
경로 끝에 추가하는 방법을 알고 있다면 어쩌면 당신이하고있는 일이 무엇인지 알 수 있습니다. 루트해야 결코 없다.
경로에 많은 시스템도 더 이상 루트 로그를하지 않습니다.