The Environment 쉘 환경
쉘은 쉘 세션 동안 환경이라고 알려진 일련의 정보를 유지 및 관리합니다.
환경은 아래와 같은 속성을 정의하는 일련의 키-값 쌍입니다.
- 사용자 홈디렉토리
- 사용자 작업 디렉토리
- 쉘 이름
- 로그인 사용자 이름
- ...
등 많은 정보를 저장하며, 쉘 세션마다 환경이 다릅니다.
printenv
printenv명령어를 통해 환경을 구성하는 키-값 쌍을 볼 수 있습니다.
printenv
printenv | less
Parameter Expansion 매개변수 확장
$
환경변수의 키 앞에 $를 붙이면 쉘에서 환경변수의 값을 대체할 수 있습니다.
존재하지 않는 변수를 참조하려고 시도하면 아무것도 얻을 수 없습니다.
존재하지 않는 변수를 참조하려고 시도하면 아무것도 얻을 수 없습니다.
Defining Variables 변수 정의
아래와 같은 형식으로 현재 쉘 세션에 쉘 변수를 정의할 수 있습니다.
(대소문자를 구분합니다)
(환경변수와 다릅니다, 하나의 쉘 세션에서만, 부모 세션에서만 존재합니다)
variable=value
variable="v a l u e"
아래와 같은 형식으로 환경변수를 정의할 수 있습니다.
(모든 하위 세션에 생성됩니다, 새로운 창에선 볼 수 없습니다)
export variable=value
업데이트를 하는 방법은 변수를 선언할 때와 동일합니다.
스타트업 파일
스타트업 파일은 세션을 시작할 때, 쉘이 읽는 데 사용되는 파일입니다.
쉘은 먼저 글로벌 설정(global config) 스타트업 파일을 읽고, 유저별 스타트업 파일을 읽습니다.
스타트업 파일은 세션에 영향을 줄 수 있습니다.
세션은 로그인, 비 로그인 쉘 세션으로 나뉩니다.
For non-login sessions 비로그인 세션(일반적으로 terminal 실행 시 세션)
etc/bash.bashrc - 글로벌 설정으로, 모든 사용자에게 영향을 줍니다.
~/.bashrc - 각각의 사용자별 설정이 가능합니다. 홈 디렉토리의 모든 사용자는 .bashrc를 가지고 있습니다.
(쉘을 맞춤화하고, PS1으로 프롬프트 설정을 하거나 맞춤형 에일리어스, 변수를 설정할 수 있습니다)
For login sessions 로그인 세션(로그인이 이후의 세션)
/etc/profile -global config for all users
~/.bash_profile -user's personal config file
~/.bash_login -read if bash_profile isn't found
~/.profile -used if previous two aren't found
Aliases 에일리어스
alias를 통해 기존 커맨드를 사용하고 그 위에 빌드하거나 결합하는 자체 맞춤형 커맨드를 정의할 수 있습니다.
에일리어스는 일종의 바로가기입니다.
alias ll='ls -al'
~/.bashrc 에 에일리어스 항목은 아래와 같습니다.
아래와 같이 에일리어스를 정의할 수 있습니다.
(어디에 정의하든 상관 없으나, 모아 두는 것을 권장합니다)
세션을 재부팅하면, 정의한 명령어가 실행되는 것을 확인할 수 있습니다.
에일리어스를 .bashrc에 입력할 수 있지만, 다른 파일에 모아둘 수도 있습니다.
이를 통해, 나만의 에일리어스를 만들고 관리할 수 있습니다.
다른 사람들이 만든 alias를 찾아보면 유용한 것들이 아주 많습니다.
다만, 기존의 명령어를 수정하고 사용하는 것에 익숙해져 있을 때,
새로운 환경에선 명령어가 다르게 작동할 수 있다는 것을 명심해야 합니다.
예컨대 alias c='clear' 로 설정한 환경이 있을 수 있고, alias c='xsel --clipboard' 로 설정한 환경이 있을 수 있습니다.
알고 사용하면 편리하지만, 모르고 사용하면 위험할 수 있으므로 주의할 필요가 있습니다.
(아래는 몇가지 alias에 대한 게시글입니다)
https://ride-dev.tistory.com/75
'OS' 카테고리의 다른 글
[Linux Command Line] Cron 크론 (0) | 2024.01.12 |
---|---|
[Linux Command Line] Bash Scripts 배쉬 스크립트 (0) | 2024.01.11 |
[Linux Command Line] 권한 변경 (0) | 2024.01.08 |
[Linux Command Line] 권한 기초 (2) | 2024.01.08 |
[Linux Command Line] grep (1) | 2024.01.05 |