。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/DevOps Linux

[DevOps-Linux] 7. Shell -5 //Shell 변수와 환경변수

quarrrter 2023. 8. 5. 17:30

Shell 변수:
Shell 변수는 스크립트나 명령어 실행 시에 사용되는 임시적인 변수입니다. 쉘(Shell) 스크립트나 명령어 안에서 값을 저장하고 추출하기 위해 사용됩니다. 변수는 $ 기호를 사용하여 선언하고 참조합니다.

 

변수 name에 문자열 "John"을 저장하고, 해당 변수를 사용하여 메시지를 출력할 수 있습니다



환경변수:
환경변수는 운영체제나 쉘 환경에서 사용되는 전역적인 변수로, 모든 프로세스가 접근할 수 있는 변수입니다. 쉘과 함께 실행되는 모든 프로그램들이 이 환경변수에 접근하여 필요한 정보를 가져올 수 있습니다. 일반적으로 대문자로 표기되며, 예를 들면 PATH, HOME, USER, LANG 등이 있습니다.

환경변수는 주로 시스템 설정이나 사용자 환경과 관련된 정보를 저장합니다. 

 

변수의 출력

set: 쉘 변수 + 환경변수 + 쉘 함수 출력

env: 환경변수만 출력 

echo $변수명 : 개별 변수의 값을 출력 

 

주요 환경 변수

HOME 사용자 홈 디렉토리의 절대 경로
USER 사용자 이름
LANG 사용하는 언어(영어)
LOGNAME 사용자 계정 이름
PATH 명령 탐색 경로
PWD 현재 작업 디렉토리의 절대 경로
SHELL 로그인 쉘

 

변수의 선언

쉘 변수의 선언 : 변수명 = 값(문자열)   

* 변수에 저장되는 모든 값은 문자열(숫자도 문자열로 취급)

* 변수 대입할 때 =의 좌우에는 공백이 없어야함.

* THIS_CLASS=linux

 

환경 변수의 선언

*export

기능: 이전에 선언한 쉘 변수를 환경변수로 변경

형식: export [옵션] [쉘 변수]

- export THIS_CLASS

- export THIS_CLASS=java  //환경 변수 선언 후 값을 java로 대입

- export -n THIS_CLASS   //환경변수를 쉘 변수로 변경 

 

다른 방법

* declare

쉘변수: declare 변수명=값

환경변수: declare -x 변수명=값  (-x: export)

 

변수의 해제

unset

기능: 지정한 변수를 해제(쉘변수, 환경변수 모두 해당

형식: unset[변수]

 

 

변수의 유효 범위 - 로그인 쉘/ 서브쉘

Login Shell: 로그인 하면 가장 먼저 실행 (시스템에 의한 실행)

Sub Shell: 다른 쉘을 통해 실행된 쉘(프로그램) => 프롬프트 모양이 변경됨 

쉘변수: 변수를 선언한 쉘에서만 유효

환경변수: 변수를 선언한 쉘과 서브쉘에서 모두 유효

(로그인쉘(bash)가 기본으로 실행되기 때문에 bash에서 설정한 환경변수는 모든 쉘에서 유효하지만, bash 가 아닌 쉘에서 선언된 환경변수는 선언한 쉘부터 밑으로 실행되는 쉘까지 유효함. bash에서는 무효함)

=> 설정한 쉘이 종료되면 사라짐(휘발성)

 

환경 변수의 상속

shell을 통해 실행된  프로그램은 환경변수를 상속받는다(복사됨) , 쉘변수는 상속되지 않음! 

환경변수에 API_KEY, PW 같은 민감정보를 선언하여 프로그램에서 변수로 사용가능. 정보와 소스코드 분리가능(보안성, 유연성 강화) 

 

tty와 pts의 차이

Unix 계열 운영 체제에서 사용되는 가상 터미널

 

tty(teletype): 일반적으로 콘솔 환경에서 사용되며, 사용자가 로그인하여 쉘을 실행할 수 있는 환경 제공.

실제 하드웨어 터미널을 가리키는 경우가 많음 (현재는 터미널 장치와 직접적인 연경이 없는 가상터미널을 나타냄)

 

pts(pseudo terminal slave): 일반적으로 ssh나 telnet과 같은 원격 접속 프로토콜을 사용하여 접속하는 경우에 사용.

클라이언트에서 사용자 입력을 받아 처리하고 pts에 출력을 전달함

가상 터미널을 가리키는 경우가 대부분