답변:
데이터 파일의 경우 차이가 없습니다. 두 명령문 모두 현재 디렉토리의 데이터 파일을 참조합니다. (예를 들어, cat filename
그리고 cat ./filename
의미 적으로 동일하다.)
문제의 파일 이름이 실행 파일을 참조하면 다른 이야기입니다 . 즉 명령 줄에 입력하는 첫 번째 (또는 유일한) 것입니다. ./filename
현재 디렉토리와 다른 곳에서 실행 파일을 찾습니다. filename
반면에, 환경 변수를 평가하고 여기에 저장된 모든 디렉토리 (현재 디렉토리를 포함하거나 포함하지 않을 수 있음)를 PATH
찾습니다 filename
.
./filename
/path/to/filename
따라서 PATH에있는 첫 번째 실행 파일이 아닌 특정 실행 파일 을 실행하려는 경우 (또는 다른 )가 선호됩니다 .
프로그램을 실행 중이라면 filename
첫 번째 프로그램 을 실행하고 두 번째 프로그램을 $PATH
현재 디렉토리에서 실행하라는 메시지가 나타납니다.
당신이 프로그램에 인수로 그 파일 이름을 사용하는 경우와 같이 do_something filename
또는 do_something ./filename
그들은 같은 뜻 후.
당신은 명령 실행을 참조하고 있습니까?
PATH
세미콜론으로 구분 된 일부 시스템 디렉토리를 포함 하는 환경 변수 가 있습니다. 입력 command
하면 시스템은 <command>라는 실행 파일을 찾기 위해 지정된 순서대로이 디렉토리를 찾습니다. 파일을 찾으면 실행을 시도합니다. echo $PATH
bash에서 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
실행 가능한 보안이이 차이의 주된 이유입니다.
당신이 원하지 않는 . 누군가가 PWD에서 ps 또는 ls와 같은 중요한 실행 파일을 트로이 http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 수 있으며 나쁜 데이터를 제시함으로써 당신을 속일 수 있기 때문에 (현재 작업 디렉토리 또는 PWD) 경로 에 있습니다.