Shell 변수:
Shell 변수는 스크립트나 명령어 실행 시에 사용되는 임시적인 변수입니다. 쉘(Shell) 스크립트나 명령어 안에서 값을 저장하고 추출하기 위해 사용됩니다. 변수는 $ 기호를 사용하여 선언하고 참조합니다.
환경변수:
환경변수는 운영체제나 쉘 환경에서 사용되는 전역적인 변수로, 모든 프로세스가 접근할 수 있는 변수입니다. 쉘과 함께 실행되는 모든 프로그램들이 이 환경변수에 접근하여 필요한 정보를 가져올 수 있습니다. 일반적으로 대문자로 표기되며, 예를 들면 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에 출력을 전달함
가상 터미널을 가리키는 경우가 대부분
'강의 > DevOps Linux' 카테고리의 다른 글
[DevOps-Linux] 7. Shell -4 //파이프 (0) | 2023.07.18 |
---|---|
[DevOps-Linux] 7. Shell -3 //표준 입출력과 리다이렉션 (0) | 2023.07.18 |
[DevOps-Linux] 7. Shell -2 (0) | 2023.07.16 |
[DevOps-Linux] 7. Shell -1 (0) | 2023.07.15 |
[DevOps-Linux] 5. 파일 시스템 (0) | 2023.07.12 |