Bash에서 PATH는 어떻게 작동합니까?

How Does Path Work Bash



Linux 터미널에서 명령을 입력할 때 일반적으로 특정 작업을 수행하기 위해 프로그램을 호출합니다. 예를 들면 다음과 같습니다. , CD , NS , mkdir , 등등. 이 모든 프로그램은 파일 시스템의 어딘가에 있습니다. 그렇죠? bash는 이러한 프로그램이 어디에 있는지 어떻게 알 수 있습니까?

여기에 환경 변수, 특히 PATH 변수가 사용됩니다. 이 변수는 bash에게 해당 프로그램을 찾을 위치를 알려주는 역할을 합니다. PATH가 작동하는 방식과 PATH를 보고 수정하는 방법을 알아보겠습니다.







환경 변수 및 $PATH

쉘 용어에서 환경은 쉘이 세션을 시작할 때마다 빌드하는 영역입니다. 환경을 관리하기 위해 환경의 다른 부분을 나타내는 환경 변수가 있습니다. 변수 값은 문자열, 디렉토리 위치, 값 또는 기타가 될 수 있습니다.



PATH는 특정 디렉토리를 추적하는 환경 변수입니다. 기본적으로 PATH 변수에는 다음 위치가 포함됩니다.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /오전
  • /sbin
  • /snap/bin(Snap이 설치된 경우)

현재 PATH에 어떤 디렉토리가 등록되어 있는지 확인하고 싶으신가요? 터미널을 실행하고 다음 명령을 실행합니다.





$던졌다 $PATH

여기서 $ 기호는 변수를 나타냅니다. NS 던졌다 명령은 PATH 변수의 값을 인쇄합니다.



이제 이 특정 환경 변수가 왜 그렇게 중요한가요? 쉘과 시스템 전체가 그것을 어떻게 취급하기 때문입니다. PATH 변수는 실행 파일을 찾을 수 있는 위치를 저장합니다. 명령이 실행될 때마다 쉘은 대상 실행 파일에 대한 PATH 디렉토리를 찾아 실행합니다.

예를 들어 던졌다 명령. 여기에서 echo 명령을 실행하고 있습니다.

$던졌다헬로월드!

실행 파일은 어디에 던졌다 ? 다음 명령을 실행하여 알아내십시오.

$어느 던졌다

우리가 볼 수 있듯이, 던졌다 실행 파일은 /usr/bin/echo에 있습니다. 어느 위치에 있습니까? 알아 보자.

$어느 어느

또한 /usr/bin/which에 있습니다. 대부분의 명령 도구는 /usr/bin 디렉토리에 있습니다. 여기서 bash는 명령의 실행 파일을 검색할 위치에 대해 PATH를 참조합니다.

경로 수정

PATH의 값을 수정하기 전에 구조를 이해하는 것이 중요합니다. 명령을 다시 실행하여 PATH 값을 확인하십시오.

$던졌다 $PATH

각 디렉토리는 : 기호로 구분됩니다.

PATH에 디렉토리 추가

사용자 정의 디렉토리를 PATH에 추가하려면 bashrc 파일을 사용합니다. 새로운 bash 세션이 시작될 때마다 bash가 로드되는 특별한 bash 스크립트입니다. bashrc 파일은 Linux 시스템의 모든 단일 사용자에게 고유합니다.

텍스트 편집기에서 bashrc 파일을 엽니다. bashrc 파일이 아직 없으면 편집기가 자동으로 파일을 생성합니다.

$내가왔다~/.bashrc

여기에서 Ubuntu와 함께 제공되는 기본 bashrc입니다. 파일의 마지막으로 이동하여(존재하는 경우) 다음 줄을 추가합니다.

$내 보내다 ='$PATH: / '

여기서 PATH 변수의 새 값은 방금 추가한 새 디렉토리와 함께 이전 변수가 됩니다.

파일을 저장하고 bash에 다시 로드하도록 지시합니다.

$원천~/.bashrc

새 경로가 성공적으로 추가되었는지 확인해 보겠습니다.

$던졌다 $PATH

짜잔! PATH가 성공적으로 업데이트되었습니다! 이제 bash는 실행 파일의 새 경로도 검색합니다. 나는 이미 스크립트를 가지고 있다 데모.sh 바탕 화면에. bash가 정확한 위치를 지정하지 않고 호출할 수 있는지 봅시다.

$데모.sh

네, bash는 문제 없이 직접 호출할 수 있습니다.

PATH에서 디렉토리 제거

PATH에서 디렉토리를 추가/제거하는 간단한 방법은 없습니다. 설명하겠습니다.

PATH의 값은 실제로 고정되어 있습니다. 그렇다면 bashrc 트릭은 어떻습니까? Bashrc는 bash가 세션을 시작할 때마다 로드하는 bash 스크립트입니다. bashrc에서 우리는 PATH의 새 값이 기본값과 사용자 정의 디렉토리가 될 것이라고 방금 선언했습니다. 이제 bash가 로드될 때마다 bashrc가 PATH의 새 값을 할당하도록 지시하고 이것이 수행하는 일입니다.

마찬가지로 PATH에서 디렉토리를 제거하려면 bashrc에서 다른 PATH 값을 다시 할당하여 bash가 시작될 때마다 수정된 값을 사용하도록 해야 합니다.

이 예를 살펴보겠습니다. PATH에서 ~/Desktop 디렉토리를 기꺼이 제거하겠습니다.

$던졌다 $PATH | 세드 -그리고 's/:~/데스크탑$//'

디렉토리가 /home/wrong/dir이면 명령은 다음과 같습니다.

$던졌다 $PATH | 세드 -그리고 's/:/home/wrong/dir$//'

여기서 흥미로운 부분은 sed 도구입니다. sed에 대해 더 알아보기 여기 그리고 여기 . 간단히 말해서 sed를 사용하여 출력을 수정하고 있습니다. 던졌다 명령. 이제 이 수정된 출력을 사용하여 PATH 값을 변경할 수 있습니다.

텍스트 편집기에서 bashrc를 열고 다음 행을 추가하십시오. 나는 그것이 작동한다는 것을 증명하기 위해 의도적으로 이전 라인을 유지하고 있습니다.

$내 보내다 ='$(에코 $PATH | sed -e 's/:~/Desktop$//')'

또는 PATH 값을 수동으로 설정할 수도 있습니다. 힘든 과정이지만 더 간단하고 쉽습니다.

$내 보내다 =/usr/현지의/빈:/usr/현지의/오전:/usr/빈:/usr/오전:/빈:/오전:
/usr/계략:/usr/현지의/계략:/스냅/오전

여기에서 명령의 값은 PATH에 할당됩니다. 파일을 저장하고 bashrc를 다시 로드합니다.

$원천~/.bashrc

결과를 확인해보자.

$던졌다 $PATH

PATH 값이 업데이트되었습니다!

마지막 생각들

bash에서 PATH 변수는 중요한 변수입니다. bash 세션을 통해 실행되는 모든 프로그램은 변수를 상속하므로 PATH에 필요한 디렉터리만 포함하는 것이 중요합니다. 디렉토리를 더 추가하면 시스템에 중복성만 추가됩니다.

bash에 대한 모든 환경 변수를 보려면 이 명령을 실행하십시오. 첫 번째 명령 부분은 모든 환경 변수를 반환하고 두 번째 부분은 출력을 오름차순으로 정렬합니다.

$환경 | 종류

배쉬 경험을 향상시키고 싶습니까? Bash 별칭은 속도를 높이고 속도를 높이는 독특한 방법을 제공합니다. bash 별칭에 대해 자세히 알아보기 .

즐기다!