해당 포스팅은 William E. Shotts, Jr.의 오픈소스 저서 The Linux Command Line(링크)를 번역한 내용입니다

쉘은 쉘 세션동안 환경(environment)이라고 하는 정보를 유지합니다. 프로그램은 환경에 저장된 데이터를 사용하여 시스템의 현재 상태나 설정을 파악합니다. 대부분의 프로그램은 설정 파일(configuration files)을 사용하여 프로그램의 설정을 저장하지만, 일부 프로그램은 환경에 저장된 값들을 사용하여 그들 자신의 동작을 조정합니다. 이를 이용하면 환경을 사용해서 쉘 안에서의 동작을 제어할 수 있습니다.
이번 장에서는 다음 명령어들에 대해 배워보겠습니다:
- 환경의 일부나 전체를 출력printenv - 쉘 옵션 설정set - 환경을 모든 자식 프로세스에 전파export - 명령의 별칭(alias)을 생성alias
쉘에는 무엇이 저장되어있나요?
쉘은 환경에 두 가지 데이터의 기본적인 유형을 저장합니다.
환경 탐색하기
환경에 무엇이 저장되어 있는지 확인하기 위해서

위와 같이 입력하면 아래와 비슷한 내용을 볼 수 있습니다:

화면에 뜬 내용은 환경 변수와 그 값들입니다. 예를 들어,



환경에 관련한 내용 중

몇 가지 흥미로운 변수들
환경은 여러 변수를 가지고 있습니다. 여러분의 환경과 아래 표에 나온 내용과는 차이가 있을 수 있으나 보통의 경우 표에 나온 변수들이 나올 것입니다.
Table 11-1: 환경 변수
변수 | 내용 |
그래픽 기반 환경의 경우 디스플레이의 이름을 출력. 대개 ":0"이라는 결과를 볼 수 있으며 이는 X 서버가 만든 첫번째 디스플레이라는 것을 뜻함 | |
텍스트 편집에 사용되는 프로그램의 이름 | |
기본 쉘 프로그램의 이름 | |
홈 디렉토리의 경로명 | |
현재 설정된 언어와 정렬 순서를 정의 | |
이전 작업 디렉토리 | |
페이징 출력을 위해 사용되는 프로그램의 이름. 대개 |
|
실행 가능한 프로그램의 이름이 입력되었을 때 검색되는 경로가 콜론으로 구분되어있는 목록 | |
"prompt string 1"의 약자. 쉘 프롬프트의 내용을 정의함. 디테일한 커스터마이징이 가능(이후에 다룰 예정) | |
현재 작업 디렉토리 | |
터미널의 타입 이름. 유닉스 계열 시스템은 다양한 터미널 프로토콜을 지원함. 이 변수는 터미널 에뮬레이터가 사용한 프로토콜을 정의함 | |
타임존을 표시. 대부분의 유닉스 계열 시스템은 UTC를 기준으로 내부의 시계를 유지하고 이 변수에 지정된 오프셋을 적용하여 현지 시간을 표시 | |
사용자명 |
배포판에 따라 다르므로 빠진 변수가 있더라도 걱정하지 마세요.
환경은 어떻게 수립되나요?
시스템에 로그인하면
- 로그인 쉘 세션 로그인 쉘 세션은 우리의 사용자명과 비밀번호를 묻는 프롬프트가 나오는 세션입니다. 예를 들어, 가상 콘솔 세션을 시작할 때가 이 경우에 해당합니다.
- 비로그인 쉘 세션 비로그인 쉘 세션은 GUI 환경에서 터미널 세션을 실행할 때가 이 경우에 해당합니다.
로그인 쉘은 하나 이상의 스타트업 파일(아래 표 참고)을 읽습니다.
Table 11-2: 로그인 쉘 세션의 스타트업 파일들
파일 | 내용 |
모든 유저에게 해당되는 전역적인 설정 스크립트 | |
사용자의 개인적인 스타트업 파일. 전역 설정 스크립트를 덮어쓰거나 연장하기 위해 사용됨 | |
비로그인 쉘 세션은 Table 11-3의 스타트업 파일을 읽습니다.
Table 11-3: 비로그인 쉘 세션의 스타트업 파일들
파일 | 내용 |
모든 유저에게 해당되는 전역적인 설정 스크립트 | |
사용자의 개인적인 스타트업 파일. 전역 설정 스크립트를 덮어쓰거나 연장하기 위해 사용됨 |
Table 11-3에 소개된 스타트업 파일들을 읽는 것 외에도, 비로그인 쉘은 부모 프로세스(주로 로그인 쉘)로부터 환경을 상속 받습니다.
여러분의 리눅스에는 어떤 스타트업 파일들이 설치되어 있는지 확인해보세요. 대부분의 파일명이 마침표로 시작하기 때문에(숨김처리 되기 때문에)
스타트업 파일에는 어떤 내용이 있나요?

"#"으로 시작하는 줄은 코멘트, 즉 문서를 읽는 사람을 위해 작성된 내용으로 쉘이 읽는 부분이 아닙니다. 쉘이 읽는 부분은 네 번째 줄부터 시작됩니다:

이를 if 복합 명령(if compound command)이라고 합니다. 더 자세히는 Part 4에서 다룰 예정이며 지금으로서는 아래와 같이 해석된다는 점만 이해하세요:

이 코드 조각으로 인해 쉘이
우리가 커맨드 라인에 명령어를 입력할 때 쉘이 어디서 명령어를 찾아보는지 궁금한 적 없으셨나요? 예를 들어, 우리가

위 코드는

이 기법을 이용하면 변수의 내용 뒤에 텍스트를 추가할 수 있습니다.
Note: 많은 배포판에서세팅을 기본적으로 제공합니다. 우분투와 같은 데비안 계열의 배포판에서는 로그인과 동시에 PATH 의 존재성을 검사하고, 이 디렉토리가 존재할 경우 자동으로 ~/bin 에 추가되도록 설정되어있습니다. PATH
마지막으로 볼 부분은

입니다.
환경 수정하기
스타트업 파일이 어디에 있고 어떤 내용을 담고 있는지 알았으니 이제 환경을 커스터마이즈 해보겠습니다.
어떤 파일들을 수정해야 하나요?
일반적인 규칙에 따라
Note: 여러분이 시스템 관리자거나 시스템의 모든 유저를 대상으로 기본 설정을 바꾸려는 게 아니라면, 수정 사항은 홈 디렉토리 내의 파일에만 반영하도록 하세요.에 있는 /etc 과 같은 파일들도 수정이 가능하지만 대부분의 경우에 민감한 작업입니다. 그러니 지금 당장은 안전을 유지하도록 합시다. profile
'리눅스 > Part 2 - Configuration and Environment' 카테고리의 다른 글
리눅스 기초 | 12-1. vi 입문 (0) | 2024.06.06 |
---|---|
리눅스 기초 | 11-2. 환경 (0) | 2024.06.05 |