어떤 프로그램이 시작될지

어떤 프로그램이 시작될지

id프로그램을 /usr/bin/디렉토리에서 내 home디렉토리 로 복사 했습니다 . id프로그램이 복사된 디렉터리에서 명령을 실행하면 어떤 것이 실행될지 모르겠습니다 .

Bash는 변수에서 프로그램을 검색 PATH하거나 디렉터리에서 실행합니까?

확인할 수 있는 방법이 있나요?

답변1

type id또는 를 사용하여 이것이 명령으로 command -v id어떻게 해석되는지 확인할 수 있습니다 . 나에게는 다음이 표시됩니다.bashid

$ type id
id is /usr/bin/id
$ command -v id
/usr/bin/id

예, bash검색됩니다 $PATH. 하지만 일단 찾으면 위치를 기억하므로 매번 검색할 필요가 없습니다. 이전에 실행한 후 이동하면 문제가 발생할 수 있습니다. hash명령을 사용하여 hash id해당 항목이 현재 존재하는지 확인할 수 있습니다.

답변2

쉘은 PATH일치하는 명령을 찾을 때까지 항상 변수에 나열된 디렉토리를 순서대로 검색합니다.

id다음을 사용하여 무엇을 선택하는지 확인할 수 있습니다.

command -v id

바이너리를 이동하는 경우(하지 말아야 할 경우) 캐시 목록의 위치를 ​​기억하기 위해 hash -r재설정 유틸리티를 실행해야 할 수도 있습니다.bash

관련 정보