bashrc의 PATH 환경 설정

bashrc의 PATH 환경 설정

다음 상황에서는 어떻게 되는지 궁금합니다. .bashrc의 PATH에 있는 디렉터리에 실행 파일이 있다고 가정합니다. 파일을 PATH에 설정된 다른 디렉터리에 복사하고 터미널에서 해당 파일을 실행하면 어떤 복사본이 실행되고 있습니까?

"파일이 PATH 내의 여러 위치에 존재하는 경우 두 번째 위치 대신 첫 번째 위치에서 해당 파일을 실행하십시오."라고 기본 설정을 설정할 수 있습니까?

답변1

빠른 답변

어떤 복사본이 실행을 시도할지 알아내려면 bashbash의 내장 유틸리티를 사용하세요 type. du예를 들어, 의 어떤 복사본이 실행될지 확인하려면 다음을 실행하세요.

$ type du
du is /usr/bin/du

이론

bash무언가 실행을 요청하면 다음 bash두 단계를 수행합니다.

먼저 캐시에서 파일 위치를 확인합니다. 이것은 실행 파일 이름 목록과 파일을 마지막으로 bash실행했을 때 파일이 있던 위치입니다.

둘째, 파일이 캐시에 없으면 경로를 확인하여 경로에 있는 각 디렉터리를 왼쪽에서 오른쪽으로 검색합니다.

그러면 대답은 복사를 수행하기 전에 현재 셸에서 실행 파일을 실행했는지 여부에 따라 달라집니다. 그렇다면 bash해당 위치를 캐시에 저장했을 수 있으며무시하다복사본을 만든 후 있을 수 있는 새로운 위치. 캐시에 없으면 실행되는 파일은 경로에 있는 디렉터리의 순서에 따라서만 달라집니다.

자세한 내용은

Bash의 현재 캐시에 무엇이 있는지 확인하려면 다음을 실행하세요.

$ declare -p BASH_CMDS
declare -A BASH_CMDS='([du]="/usr/bin/du" )'

위의 내용은 du내가 실행했을 때만 캐시에 있었던 것을 보여줍니다. 더 많은 명령을 실행한 다음 다시 실행하면 캐시에 더 많은 명령이 저장됩니다.

현재 경로가 무엇인지 확인하려면 다음을 실행하세요.

$ echo $PATH
/bin:/usr/bin:/opt/bin:/usr/local/bin:/usr/X11R6/bin

경로는 콜론으로 구분된 목록입니다. 위의 경로에는 5개의 디렉터리가 표시되어 있습니다. 왼쪽부터 시작하여 오른쪽으로 검색됩니다.

기본 설정을 지정할 수 있나요?

예, 경로의 디렉터리 순서를 변경할 수 있습니다.

또는 대화형 작업의 경우 별칭을 설정할 수 있습니다. 예를 들어:

$ alias dd=/opt/bin/dd

위 별칭이 설정된 후 dd명령줄에 입력하면 bash캐시와 PATH를 무시하고 실행(또는 실행을 시도)할 수 있습니다 /opt/bin/dd.

관련 정보