11. 환경
이 단원에서 주로 나오는 명령어 정리
printenv :: 환경 일부 또는 전체 출력하기
set :: 쉘 옵션 설정하기
export :: 다음 실행 프로그램에 환경 적용하기
alias :: 명령어 별칭 생성하기
쉘은 환경에 두 가지 기본적인 형식을 저장한다. 하나는 환경 변수고, 하나는 쉘 변수다.
쉘 변수는 bash에 의해 저장된 작은 데이터이고, 환경 변수는 그 밖의 모든 것이다.
이 외에도, 쉘은 변수뿐만 아니라 별칭 그리고 쉘 함수와 같은 프로그램 데이터도 저장한다.
1. 환경 검증하기
환경에 저장된 것이 무엇인지 보려면 bash에 내장된 set 명령어나 printenv 프로그램을 사용하면 된다.
set 명령어는 쉘 변수와 환경 변수 모두 보여준다.
printenv 명령어는 오직 환경 변수만을 보여준다. 이 때 환경 변수 내용이 상당히 길기 때문에 파이프라인을 활용해서 less 명령어를 사용하는 것이 좋을 것이다. => 'printenv | less'를 입력해주면 된다.
'printenv USER'를 입력해주면 사용자 이름이 출력된다.
'set | less'를 입력해주면 쉘 변수와 환경 변수 모두 출력된다. set명령어는 출력결과를 알파벳 순으로 정렬해준다.
2. 환경은 어떻게 설정할까
시스템에 로그인하면 bash 프로그램이 시작되면서 시작 파일이라고 하는 일련의 환경 설정 스크립트를 읽는다.
이 시작 파일은 모든 사용자에게 공유되는 기본적인 환경설정 값을 규정해놓는다. 그 다음 개인 사용자의 환경을 정의하는 홈 디렉토리의 내부 시작 파일이 구성된다. 이는 실행되는 셀 세션에 따라 달라지게 된다.
(1) 로그인 여부에 따라 달라지는 쉘 환경(로그인쉘 vs 비로그인쉘)
로그인 여부에 따라 홈 디렉토리의 내부 시작 파일이 달라지게 된다.
로그인 쉘에서는 사용자 이름과 비밀번호를 입력(ex. 가상 콘솔 세션이 시작할때)하도록 되어있고, 일반적으로 GUI환경에서 터미널 세션을 실행할 때에는 비로그인 쉘로 실행된다.
+ 리눅스 CLI에서 #기호는 주석을 의미한다. #으로 시작하는 줄은 세션이 참조하는 부분이 아니다.
PATH 명령어는 실행 프로그램명을 입력할 때, 그 이름을 찾는 디렉터리 목록을 의미한다.
PATH=$PATH:$HOME/bin => 이는 이름을 찾는 디렉터리 목록에 $HOME/bin 디렉토리가 추가된다는 것이다.
ex)
foo="This is some"
echo $foo
결과: This is some
foo=$foo" text."
echo $foo
결과: This is some text.
export 명령어는 쉘과 이 쉘의 자식 프로세스들에 PATH내용을 적용하라고 알려준다.
3. 환경 편집
(1)텍스트 편집기
시작 파일뿐만 아니라 시스템에 있는 다른 환경설정 파일을 편집하기 위해서는 텍스트 편집기라고 하는 프로그램을 사용한다. 커서 이동으로 화면상의 단어를 편집할 수 있다는 점에서는 워드와 비슷하다. 다른 점은 텍스트만 지원한다는 것과 편집 프로그램을 위한 기능들이 주로 포함되어 있다는 것이다.
텍스트 편집기는 코드 작성을 하는 소프트웨어 개발자들과 시스템을 제어하기 위해서 설정 파일을 관리해야 하는 시스템 관리자들이 사요하는 중심적인 도구다.
(1)-1. 그래픽 환경의 텍스트 편집기
GNOME에는 gedit이, KDE에는 kedit, kwrite, kate(복잡한 순서대로)이 있다.
(1)-2. 텍스트 기반 환경의 텍스트 편집기
nano :: 간단하며 사용하기 쉬운 편집기, PINE 이메일 프로그램에서 제공하는 pico 편집기의 확장판으로 설계
vi :: 유닉스형 시스템을 위한 전통적인 편집기
emacs :: 아주 방대하고, 다용도로, 모든 것을 수행하는 프로그램 환경이다. 구하기는 쉽지만, 기본적으로 설치되어있지는 않다.
(2) nano편집기 실행
'nano .bashrc' 를 명령어로 치면, bashrc파일을 nano 편집기로 연다.
모든 편집기에서 가장 첫번째로 배워야 할 명령어는 프로그램을 종료하는 방법이다. 이는 'CTRL + x' 를 치면 편집기가 종료된다. 두번째로 배워야 할 명령어는 작업을 저장하는 방법이다. 이는 'CTRL + o' 를 치면 작업이 저장된다.