Linux에서 파일 이름과 ./filename의 차이점은 무엇입니까


답변:


18

데이터 파일의 경우 차이가 없습니다. 두 명령문 모두 현재 디렉토리의 데이터 파일을 참조합니다. (예를 들어, cat filename그리고 cat ./filename의미 적으로 동일하다.)

문제의 파일 이름이 실행 파일을 참조하면 다른 이야기입니다 . 즉 명령 줄에 입력하는 첫 번째 (또는 유일한) 것입니다. ./filename현재 디렉토리와 다른 곳에서 실행 파일을 찾습니다. filename반면에, 환경 변수를 평가하고 여기에 저장된 모든 디렉토리 (현재 디렉토리를 포함하거나 포함하지 않을 수 있음)를 PATH찾습니다 filename.

./filename/path/to/filename따라서 PATH에있는 첫 번째 실행 파일이 아닌 특정 실행 파일 을 실행하려는 경우 (또는 다른 )가 선호됩니다 .


6

프로그램을 실행 중이라면 filename첫 번째 프로그램 을 실행하고 두 번째 프로그램을 $PATH현재 디렉토리에서 실행하라는 메시지가 나타납니다.

당신이 프로그램에 인수로 그 파일 이름을 사용하는 경우와 같이 do_something filename또는 do_something ./filename그들은 같은 뜻 후.


5

당신은 명령 실행을 참조하고 있습니까?

PATH세미콜론으로 구분 된 일부 시스템 디렉토리를 포함 하는 환경 변수 가 있습니다. 입력 command하면 시스템은 <command>라는 실행 파일을 찾기 위해 지정된 순서대로이 디렉토리를 찾습니다. 파일을 찾으면 실행을 시도합니다. echo $PATHbash에서 PATH를 볼 수 있습니다 . 예를 들면 다음과 같습니다.

$ echo $ PATH
/ sbin : / bin : / usr / sbin : / usr / bin : / usr / games : / usr / local / sbin : / usr / local / bin : / home / ivanatora / bin : / usr / local / kde4 / bin : / usr / local / kde4 / bin

입력 ./filename할 때 정확한 경로를 지정하십시오 : 현재 디렉토리. 보안상의 이유로 현재 디렉토리가 $ PATH에 거의 없음을 알 수 있습니다. 따라서 현재 디렉토리에서 파일을 실행하려면을 사용하십시오 ./filename.

경로로 파일을 실행하려면 (특히 $ PATH에없는 경우) 다음 <path>/file과 같이 입력 할 수도 있습니다 .

/ sbin / ifconfig


3

실행 가능한 보안이이 차이의 주된 이유입니다.

당신이 원하지 않는 . 누군가가 PWD에서 ps 또는 ls와 같은 중요한 실행 파일을 트로이 http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 수 있으며 나쁜 데이터를 제시함으로써 당신을 속일 수 있기 때문에 (현재 작업 디렉토리 또는 PWD) 경로 에 있습니다.


1

사용하는 환경에 따라 다릅니다.

예를 들어 "프로그램 파일 이름"과 같은 인수는 프로그램에 달려 있지만 일반적으로 동일합니다.

"filename arguments"와 같은 프로그램 이름으로 "filename arguments"는 바이너리를 찾기 위해 PATH를 검색하고 "./filename arguments"는 현재 디렉토리의 프로그램을 사용합니다. 이 경우 분명히 유용합니다. PATH에 없지만 if 경우에도 이것을 사용하는 것이 유용합니다. 아마도 이전 항목과 일치하기 때문에 경로에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.