SW/리눅스

Linux : $PATH : 디렉토리 추가 방법, 예제, 명령어

얇은생각 2024. 1. 24. 07:30
반응형

명령줄에 명령을 입력하면 기본적으로 셸에 지정된 이름의 실행 파일을 실행하라는 것입니다. 리눅스에서는 ls, find, file 등과 같은 실행 파일 프로그램이 일반적으로 시스템의 여러 디렉터리 내부에 있습니다. 이 디렉터리에 저장된 실행 파일의 실행 권한을 가진 모든 파일은 임의의 위치에서 실행할 수 있습니다. 실행 프로그램을 저장하는 가장 일반적인 디렉터리는 /bin, /sbin, /usr/sbin, /usr/local/bin /usr/local/sbin입니다.

그러나 실행 프로그램을 검색할 디렉터리가 무엇인지 셸이 어떻게 알 수 있습니까? 셸이 전체 파일 시스템을 검색합니까?

답은 간단합니다. 명령을 입력하면 셸은 사용자 $PATH 변수에 지정된 모든 디렉토리를 검색하여 해당 이름의 실행 파일을 찾습니다.

리눅스 시스템에서 $PATH 변수에 디렉토리를 추가하는 방법을 설명합니다.

 

 

Linux : $PATH : 디렉토리 추가 방법, 예제, 명령어

 

 

리눅스에서 $PATH

$PATH 환경 변수는 실행 파일을 검색할 디렉터리를 셸에 알려주는 콜론으로 구분된 디렉터리 목록입니다.

$PATH에 어떤 디렉토리가 있는지 확인하려면 printenv 또는 echo 명령을 사용할 수 있습니다:

출력은 다음과 같습니다:

echo $PATH

# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/

 

 

동일한 이름을 공유하는 두 개의 실행 파일이 두 개의 다른 디렉토리에 있는 경우 셸은 $PATH에서 첫 번째로 오는 디렉토리에 있는 파일을 실행합니다.

 

 

$PATH에 디렉토리 추가

$PATH 변수에 다른 디렉토리를 추가하고자 하는 상황이 발생할 수 있습니다. 예를 들어, 일부 프로그램은 다른 위치에 설치될 수도 있고, 개인 스크립트를 위한 전용 디렉토리를 가지고 싶지만 실행 파일의 절대 경로를 지정하지 않고 실행할 수도 있습니다. 이를 위해서는 $PATH에 디렉토리를 추가하기만 하면 됩니다.

셸 스크립트를 보관하는 홈 디렉토리에 bin이라는 디렉토리가 있다고 가정해 보겠습니다. $PATH에 디렉토리를 추가하려면 다음을 입력하십시오:

export PATH="$HOME/bin:$PATH"

 

 

export 명령은 수정된 변수를 셸 자식 프로세스 환경으로 내보냅니다.

이제 파일의 전체 경로를 지정하지 않고 실행 가능한 스크립트 이름을 입력하여 스크립트를 실행할 수 있습니다.

그러나 이 변경 사항은 일시적일 뿐이며 현재 셸 세션에서만 유효합니다.

변경 사항을 영구적으로 변경하려면 셸 구성 파일에 $PATH 변수를 정의해야 합니다. 대부분의 리눅스 배포판에서는 새 세션을 시작할 때 환경 변수를 다음 파일에서 읽어 들입니다:

/etc/environment /etc/profile과 같은 글로벌 셸별 구성 파일. 새 디렉터리를 모든 시스템 사용자 $PATH에 추가하려면 이 파일을 사용합니다.

사용자 셸별 구성 파일. 예를 들어, Bash를 사용하는 경우 ~/.bashrc 파일에서 $PATH 변수를 설정할 수 있습니다.

Zsh를 사용하는 경우 파일 이름은 ~/.zshrc입니다.

이 예제에서는 ~/.bashrc 파일에 변수를 설정합니다. 텍스트 편집기로 파일을 열고 파일의 끝에 다음 행을 추가합니다:

# ~/.bashrc

export PATH="$HOME/bin:$PATH"

 

 

source 명령을 사용하여 파일을 저장하고 새 $PATH를 현재 셸 세션에 로드합니다:

source ~/.bashrc

 

 

디렉토리가 성공적으로 추가되었는지 확인하려면 다음과 같이 입력하여 $PATH 값을 인쇄합니다:

echo $PATH

 

 

$PATH에서 디렉토리 제거

$PATH 변수에서 디렉터리를 제거하려면 해당 구성 파일을 열고 $PATH 변수에서 해당 디렉터리를 삭제해야 합니다. 변경 내용은 새 셸 세션에서 활성화됩니다.

또 다른 드문 상황은 현재 세션에 대해서만 $PATH에서 디렉터리를 제거하려는 경우입니다. 변수를 일시적으로 편집하여 이를 수행할 수 있습니다. 예를 들어 $PATH 변수에서 /home/lina/bin 디렉터리를 제거하려는 경우 다음 작업을 수행합니다:

PATH=$(echo "$PATH" | sed -e 's/:\/home\/lina\/bin$//')

 

 

위 명령에서 현재 $PATH 변수를 sed 명령으로 전달하고 있으며, sed 명령은 지정된 문자열(디렉토리 경로)을 제거합니다.

$PATH에 임시로 새 디렉터리를 추가한 경우 현재 터미널을 종료하고 새 디렉터리를 열어 제거할 수 있습니다. 임시 변경 사항은 현재 셸 세션에서만 유효합니다.

 

 

결론

사용자나 글로벌 $PATH 변수에 새로운 디렉터리를 추가하는 것은 꽤 간단합니다. 이를 통해 실행 파일의 전체 경로를 입력할 필요 없이 비표준 위치에 저장된 명령과 스크립트를 실행할 수 있습니다.

Ubuntu, CentOS, RHEL, Debian Linux Mint를 포함한 모든 리눅스 배포판에도 동일한 지침이 적용됩니다.

반응형