다음의 차이점은 무엇입니까?
./executable
그리고 executable
. 일부 실행 파일(Linux가 아닌 명령)이 때때로 필요하지 않은 이유는 무엇입니까 ./
?
makefile(물리적 코드)을 통해 실행 파일을 설치한 경우 이를 제거하고 최신 버전을 설치하려면 어떻게 해야 합니까? 코드를 제거하는 것으로 rm
충분합니까 ? 이 경우 실행 파일을 실행하는 데는 필요하지 않습니다../
답변1
UNIX 환경(및 DOS 및 Windows와 같은 다른 시스템에서도)에서 쉘은 특정 디렉토리에서 실행 파일을 찾습니다. Unix 환경에서는 PATH
변수로 정의됩니다. PATH
다음 명령을 실행하여 변수의 디렉터리를 확인합니다.
$ echo $PATH
결과는 다음과 유사합니다.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
보시다시피 변수는 콜론으로 구분된 디렉터리 목록입니다. 예를 들어 명령을 실행하면 ls
시스템은 목록의 첫 번째 디렉터리(예 /usr/local/sbin
: )에서 실행 파일을 검색합니다. 여기에 지정된 파일을 찾을 수 없으면 ls
찾을 때까지 다음 디렉터리를 시도합니다. 따라서 ls
명령이 에 있으면 /usr/bin
실행됩니다. 또는 쉘이 어디에서나 명령을 찾을 수 없으면 명령을 찾을 수 없음 오류가 표시됩니다.
그러나 실행 파일을 호출하는 다른 방법이 있습니다. ls
두 개의 디렉토리에 이름이 지정된 두 개의 프로그램이 있고 PATH
두 번째 프로그램을 실행하려고 한다고 가정합니다. 이를 수행하는 방법은 아마도 running /usr/bin/ls
이므로 원하는 방식을 지정할 수 있습니다.
이는 .
현재 디렉터리에 대한 바로가기입니다. 따라서 /home/user
에 있다면 ./configure
바로 가기입니다 /home/user/configure
.
PATH
해당 위치를 찾아서 삭제하면 파일을 삭제할 수 있습니다. 그러나 대부분의 최신 배포판(예: rpm, dpkg, pacman 등)에서 사용할 수 있는 패키지 관리자를 통해 시스템에 설치된 바이너리를 관리하는 것을 선호할 수 있습니다. Makefile이 여러 실행 파일을 생성하는 경우 이 방법으로 삭제하기가 더 쉬울 것입니다. 또한 makefile은 일부 라이브러리 파일과 기타 몇 가지 항목을 생성할 수 있으므로 패키지 관리 도구를 사용하는 것이 더 쉽습니다. 때때로 Makefile이 제거 루틴(예: make uninstall)을 불러올 수 있지만 얼마나 자주 발생하는지 잘 모르겠습니다. 프로그램을 새 메이크파일로 업데이트하면 새 메이크파일이 make install
이전 바이너리를 대체할 수 있지만 이것이 보장되지는 않습니다.
를 실행하면 언제든지 명령 실행 파일이 무엇인지 확인할 수 있습니다 which
. 예를 들어, 어디에 있는지 알고 싶다면 ls
:
$ which ls
/usr/bin/ls