본문 바로가기
IT/리눅스 이론

리눅스 path로 명령어 자동완성 만들기(환경변수 profile)

by 꾸꾸웍스 2022. 6. 26.
반응형

 


리눅스 path로 명령어 자동완성 만들기(환경변수 profile)


 

 

 

※ 목차

1. /etc/profile과 .profile 차이
2. 명령어 자동완성 만들기 첫번째
3. 명령어 자동완성 만들기 두번째
4. 명령어 자동완성 만들기 세번째
5. 명령어 자동완성 만들기 네번째

 

리눅스 명령어 자동완성이란 실행파일의 경로를 환경변수 PATH를 저장하여 전체 경로를 터미널에 입력하지 않아도 실행 파일명만 입력하여 명령어를 자동으로 실행하게 됩니다. 예를 들어 흔히 사용하는 ls명령어, mv명령어, chmod 명령어처럼 디렉토리의 풀 경로를 입력하지 않아도 PATH에 등록된 해당 명령어를 실행해줍니다.

 

$ which {명령어}

 

/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin

위 경로는 각자 실행이 되는 권한이나 조건은 조금 다르지만 보통 리눅스 서버의 PATH의 환경변수로 잡혀있습니다

 

 

1. 리눅스 /etc/profile과 .profile 차이

 

리눅스 /etc/profile이란?

 

 

/etc 디렉토리 하위에 있는 profile이라는 파일은 리눅스 운영체제의 로그인을 위한 환경을 저장하고 리눅스 사용자들이 로그인을 하면 이 로그인 환경 파일을 읽습니다. 이 profile 파일은 모든 계정에 공통으로 적용되며 전역 환경변수로써 기본 환경 변수를 주로 저장합니다. 예를 들어 사용자의 홈 디렉토리, 실행파일을 찾는 경로, 프로그램 지원 언어, 사용자 이름, 프롬프트 설정 변경 등을 지정하고 저장할 수 있습니다

 

 

리눅스 ~/.profile 또는 ~/.bash_profile 이란?

 

 

리눅스 사용자가 사용자 계정으로 로그인을 하게 되면 /etc/profile의 환경을 읽어 들인 다음 로그인한 사용자 계정의 홈 디렉터리에. profile 또는 .bash_profile 파일을 읽게 됩니다. 지역 환경변수로서 로그인한 각자의 환경에 맞게 사용이 가능합니다

 


 

위 내용을 이용하여 실행파일을 찾는 경로를 입력하여 리눅스에서 명령어를 절대 경로 및 상대 경로를 사용하지 않고 자동 명령어를 완성하는 방법을 알아보겠습니다

 

 

2. 명령어 자동완성 만들기 첫번째

 

명령어 자동완성 만들기 첫번째는 현재 환경변수 PATH에 등록된 경로에 실행파일을 넣어서 명령어를 자동 완성하는 방법입니다. 사용하는 리눅스 환경의 PATH 환경변수를 echo $PATH 명령어로 확인합니다.

 

$ echo $PATH

 

각 경로의 구분 기호는 ' : ' 콜론으로 구분하며 원하는 경로의 PATH의 환경변수를 추가했다면 위 사진보다 길 수 있습니다. sed 명령어를 이용해 구분기호 콜론을 next line으로 바꾸어 보면 아래 출력된 경로들 중 아무 곳에 실행파일을 옮겨 놓으면 자동으로 명령어를 완성하게 됩니다. 임의로 만든 apple.sh 실행파일을 랜덤으로 2곳으로 옮겨 명령어 자동완성을 확인해 보겠습니다.

 

 

apple.sh 실행 파일은 root 홈 디렉터리에 있으며 This is apple을 출력하는 실행파일입니다. 터미널에 ap를 입력하고 키보드의 TAB을 누르면 apple.sh 실행파일은 나오지 않으니 절대 경로 및 상대 경로를 이용하여 apple.sh를 실행해야 됩니다.

 

 

root의 홈 디렉터리에 있는 apple.sh를 echo $PATH로 확인한 경로 중 /bin과 /usr/local/sbin으로 옮겨 ap를 누르고 키보드 TAB을 누르면 apple.sh가 나오는 것을 볼 수 있습니다.

 

 

반응형

 

 

3. 명령어 자동완성 만들기 두번째

 

명령어 자동완성 만들기 두번째는 /etc/profile에 직접 PATH 환경변수를 설정하는 방법입니다. root를 포함한 리눅스 사용자 계정으로 로그인 시 /etc/profile의 환경변수 파일을 읽는 방법을 이용한 것입니다. /etc/profile에 환경변수 PATH를 등록하는 방법은 콜론을 이용하여 이어서 쓰거나 새롭게 정의해주는 방법이 있습니다

 

PATH=$PATH:{경로} 또는 PATH=$PATH:{경로}:{경로}..

 

$ vim /etc/profile

PATH=$PATH:/usr/local/fruit
export PATH

 

/etc/profile 맨 아랫줄에 위 내용의 /usr/local/fruit 경로를 추가한 후 apple.sh 실행파일을 /usr/local/fruit에 옮겨 줍니다. 이후 source명령어를 이용하여 /etc/profile에 변경된 내용을 적용 후 자동완성을 확인하면 apple.sh는 자동 실행을 하게 됩니다

 

$ source /etc/profile

 

root가 아닌 다른 사용자 계정도 로그인시 /etc/profile을 읽기 때문에 PATH가 설정된 apple.sh 실행파일을 자동 완성하여 사용이 가능합니다.

 

 

 

4. 명령어 자동완성 만들기 세번째

 

명령어 자동완성 만들기 세번째는 로그인 한 계정의 .profile 즉, .bash_profile에 직접 PATH 환경변수를 설정하는 방법입니다. 각 사용자 홈디렉토리에 존재하는 .bash_profile의 작동방식은 앞에서 설명했듯이 /etc/profile과 동일하게 PATH를 설정 할 수 있지만 PATH를 등록한 특정 사용자 계정에만 동작하며 나머지 사용자 계정에서는 자동완성이 되지 않습니다.

 

 

ihlee 사용자 계정 홈 디렉토리에 있는 .bash_profile 파일에 PATH를 설정 후 해당 경로에 apple.sh 실행파일을 옮긴 후 source 명령어를 이용해 설정 적용을 하고 자동완성을 시도해보면 자동완성이 됩니다. 하지만 아래처럼 다른 계정의 .bash_profile에는 설정이 되어 있지 않기 때문에 실행이 되지 않습니다.

 

 

 

5. 명령어 자동완성 만들기 네번째

 

명령어 자동완성 만들기 마지막 순서는 alias 명령어를 이용해 따로 환경변수 PATH를 지정하지 않고 원하는 명령을 실행하도록 저장합니다. alias는 별명이라는 뜻으로 설정 파일 또는 사용하고 있는 터미널에 등록하여 사용할 수 있습니다. 예를 들어 자주 사용하는 mv 명령어도 -i 옵션과 함께 alias로 등록이 되어있는 걸 확인할 수 있습니다.

 

alias {사용자지정}='{실행할 명령어}'

 

$ alias apple='/home/apple.sh'

 

 


 

반응형
그리드형

댓글