쉘스크립트

환경 변수

트리스탄1234 2022. 7. 4. 13:23
728x90
반응형

 

리눅스 환경에서는 두가지 환경 변수가 있습니다. 하나는 Global 환경 변수이고, 다른 하나는 로컬 환경변수 입니다. Global 환경 변수는 리눅스 시스템의 전체에서 보여지는 환경 변수이고, 글로벌 환경변수는 모두 대문자로 생성이 됩니다.

1. Global 환경변수 와 Local 환경 변수 확인 하는 방

Global 환경변수를 보는 명령은 printenv이고 리눅스 시스템 로그인시 디폴트로 설정되는 값들이 보여 집니다. 아래 그림 참고 하시기 바랍니다.

[printenv 출력 화면]

위의 화면에서 보듯이 Global 환경 변수의 종류가 너무 많습니다. 그럼 특정 변수만 보고 싶을때는 어떻게 해야 될까요? 'echo'명령을 사용하면 됩니다.

예를 들어서 HOME 환경 변수를 보고 싶다면 echo $HOME이란 명령을 실행하면 아래 그림과 같이 해당 변수만 표시 됩니다.

[echo 실행 화면]

로컬 환경 변수는 해당 환경 변수를 만든 프로세스에서만 보입니다. 그리고 불행히도 로컬 환경변수만 볼수 있는 명령은 없습니다. 다만 set명령을 사용하면 글로벌과 로컬 환경 변수 모두를 볼수 있습니다.

[로컬 환경 변수]

2. 환경 변수 설정하기

Local 변수는 쉘을 실행시킨 다음 사용자는 원하는 변수를 생성할 수 있습니다. 생성하는 방법은 변수명=값을 넣으면 되고 값에는 문자나 숫자모두 들어갈 수 있습니다. 다만 문자열을 변수에 할당할때에는 '값' 이런식으로 사용을 해야 합니다.

그리고 변수명=값 사이에는 공백이 있으면 안되고, 변수값을 확인 할때에는 echo $변수명을 넣어서 확인을할 수 있습니다.

[변수 값 입력 하기]

변수에 값이 입력이 되면 동일한 Shell Process에서는 변수 사용이 가능하지만 다른 Shell Process에서는 사용할 수 없습니다.

그리고 child process에서 생성된 변수는 parent process로 이동할 경우 사용할 수 없습니다.

Global 환경 변수를 설정하는 방법은 Local 환경 변수를 생성하고 해당 환경 변수를 export하면 Global 환경 변수가 됩니다. export된 후에 해당 변수를 확인할때에는 $를 사용하지 않아야 됩니다.

반응형

변수를 삭제하는 방법은 unset 변수명 을 입력하면 생성 했던 변수를 삭제 할 수 있습니다. 주의할점은 unset 명령어 다음에 변수앞에 $표시를 사용하지 않는다는 것입니다.

또 하나의 주의점은 child process에서 변수를 생성하고 Global 변수로 export 한 상태에서 child process상태에서 해당 변수를 삭제를 하여도 parent process에는 해당 변수가 존재하게 된다는 점을 기억 하시기 바랍니다.

3. 디폴트 Shell 환경 변수

리눅스는 시스템의 기본 설정을 위해 디폴트 Shell 환경 변수를 자동적으로 생성 합니다 이중 중요한 변수를 나열을 해 보면 아래표와 같습니다.

PATH 변수에는 디렉토리의 위치들이 들어가 있는데요 각 디렉토리는 콜론으로 분리되어 있습니다. PATH변수는 shell에서 명령을 실행시 해당 명령어의 실행 파일을 찾기 위한 위치를 정의를 하게 됩니다.

예를 들어 path라는 디렉토리 안에 test12.sh이라는 파일을 생성하고 상위 디렉토리에서 실행을 하게 되면 PATH변수에 아래와 같이 실행될 파일의 위치를 추가로 지정을 해 주어야 합니다.

PATH=$PATH:/home/user/path

더 간단하게 실행할 수 있는 방법은 싱글 닷 (.)마크를 사용을 하면 됩니다

싱글 닷 마크는 현재 프롬프트가 위치한 디렉토리를 의미 합니다.

PATH=$PATH:.

4. 디폴트 환경 변수가 설정 되는 방법

리눅스 시스템의 디폴트 환경변수가 설정 되는 방법은 아래와 같은 3가지 경우가 있습니다.

1)리눅스 시스템 로그인시: 시스템에 로그인을 할때 Bash Shell은 Log in Shell로써 시작되고, 4개의 startup파일을 검색 하게 됩니다. 검색 하는 순서는 아래와 같고,

A./etc/profile: 먼저 실행되는 startup 파일, /etc/profile.d 에 있는 sh 파일 실행

B.$HOME/.bash profile :나머지 3개 파일은 user의 특징 별로 환경 변수 설정함

C. $HOME/.bash login

D. $HOME/.profile

2) 로그인 후 Shell실행시(Interacitve Shell): 사용자의 홈 디렉토리에 있는 .bashrc

파일일 이용해 환경 변수가 설정 됩니다. 이 파일은 /etc/bashr파일을 먼저 검색을 하고 사용자의 Allias를 위한 공간을 제공한다.

3) 시스템이 실행 시키는 Shell Script(Non-interactive shell): 시스템이 실행될때 BASH ENV 변수를 참조 해서 실행시킬 Script파일을 확인하고 실행 시킨다.(default는 미설정)

4. 변수 배열:

환경 변수들은 배열로써 여러개의 값을 환경 변수에 저장을 할수 있습니다.

설정하는 방법은 아래와 같이 괄호안에 공백을 두고 값들을 나열하면 됩니다

 

$ mytest=(one two three four five)

$ echo $mytest

one

$

그냥 변수를 출력을 하게 되면 첫번째 값만 보이고 나머지 값을 볼수 없다. 특정 위치의 값을 보고 싶으면 아래와 같이 변수명 뒤에 보고 싶은 값의 인덱스 값을 주어야 한다. 인덱스값은 맨 0번부터 시작을 한다.

$ echo ${mytest[2]}

three

$

전체를 보고 싶은경우는 *기호를 변수명 뒤에 기입하면 됩니다.

$ echo ${mytest[*]}

one two three four five

$

배열안에서 특정 인덱스의 값을 아래와 같이 변경 가능하다.

$ mytest[2]=seven

$ echo ${mytest[*]}

one two seven four five

$

특정 배열의 값을 지울 수도 있습니다.

$ unset mytest[2]

$ echo ${mytest[*]}

one two four five

$

$ echo ${mytest[2]}

$ echo ${mytest[3]}

four

$

5.. 명령어 Alias 사용하기

리눅스는 기본 Alias를 제공하고, 기본 Alias를 보기 위해서는 alias -p명령을 실행 하면 됩니다.

[기본 Alias]

개인적으로 Alias를 생성하고 싶다면 아래와 같이 명령어를 입력하여 사용하면 됩니다. alias 사용할익명 명령어='실제 명령어와 옵션'

위와 같이 설정을 하고 나면 Alias는 Local 지역변수로 작동 합니다. 즉 다른 Terminal을 열어서 사용하면 동작을 하지 않습니다.

오늘 포스팅은 여기까지 하겠습니다.

Shell Script의 전문가가 되는 그날까지 화이팅!!!!

728x90
반응형

'쉘스크립트' 카테고리의 다른 글

기본 Shell 스크립트 작성  (1) 2022.07.05
리눅스 파일 퍼미션  (1) 2022.07.05
Bash Shell 명령어들  (0) 2022.07.04
Bash Shell 기본 명령어  (1) 2022.07.04
Linux 커널의 기능  (0) 2022.07.04