hyperskill - Variables and aliases 영어 원문
당신은 아마도 shell(쉘 or 셸) 과 관련된 환경에 대한 무언가를 들어 봤을 겁니다.
그래요, 이건 shell 이 서로 다른 프로그램들과 작업하는 데 도와주는 몇 가지 특정 데이터 뭉치입니다.
오늘은 변수와 별칭과 같은 환경의 일부들을 탐색 해 봅시다.
이러한 환경의 일부는 많은 UNIX 쉘에 흔하며, 당신의 취향에 맞게 사용자화할 수 있습니다.
Shell variables - 쉘 변수
모든 프로그래밍 언어들에 있는 변수들과 비슷하게,
shell variable(쉘 변수) 또한 몇 가지 정보/값 을 저장하는 컨테이너처럼 표현될 수 있습니다.
이러한 값들은 시스템의 액션을 조정하기 위한 쉘 내부의 프로그램으로 사용됩니다.
Bash(배쉬 or 배시) 는 쉘에 기본적으로 할당된 많은 쉘 변수들을 사용합니다.
예를 들어, HOME
변수는 현재 유저의 홈 디렉토리로 채워져 있습니다.
이 HOME
변수는 cd
명령어만 사용 시 기본으로 사용되며,
또한 ~
표시 도 HOME
과 동일한 파일 경로를 가지고 있습니다.
echo
명령어를 사용하여 변수 내부에 무엇이 있는 지 보고,
변수 이름 앞에 $
표시를 붙여서 변수의 내용을 봅시다 :
$ echo $HOME
/home/<user name>
# macOs 의 경우
/Users/<user name>
현재 쉘에서의 새로운 쉘로 수출된 쉘 변수들의 하위 집합은 environment variables(환경 변수) 라고 부릅니다.
해석 :
현재 쉘에서 새로운 쉘을 만들었다. 그 과정에서, 현재 쉘의 변수 중 일부를 새로운 쉘로 내보낸다.
이렇게 내보내진 변수들을 환경 변수 라고 부른다.
export
명령어를 사용해서 모든 변수들을 환경 변수로 변환할 수 있습니다 :
export VARIABLE
당신은 밑의 명령어를 통해 쉘 변수들의 리스트를 볼 수 있습니다 :
set | less
| less
는set
명령어를 통해 터미널에 길게 출력되는 과정 대신,
터미널에서vim
과 같이 보고, 이동할 수 있는 수단을 제공한다.
읽기 모드에서 나가고 싶다면,q
를 입력하면 된다.
Result :
'!'=3152
'#'=0
'$'=3133
'*'=( )
-=569JNRXghikls
0=/bin/zsh
'?'=0
@=( )
ARGC=0
BG
CDPATH=''
COLUMNS=162
COMMAND_MODE=unix2003
.... 몇십개가 더 있음.
read 모드에서 나가고 싶다면, 영어로 q 를 입력하면 된다.
또한, 당신은 밑의 명령어를 사용하여 환경 변수들의 리스트를 볼 수 있습니다 :
printenv | less
Result :
SHELL=/bin/zsh
TERM=xterm-256color
USER=gongdamhyeong
등등...
이제, 쉘 에서 변수를 생성하는 법에 대해서 살펴 보겠습니다 :
$ MY_VARIABLE="some value"
$ echo $MY_VARIABLE
some value
당신이 값을 설정 할 때, $
표시는 필요 없으며, =
앞뒤에 공백은 없습니다.
또한, 이름은 문자, 숫자, 언더스코어(밑줄_
) 로 구성할 수 있지만, 첫 번째 문자는 숫자로 시작 할 수 없습니다.
설정했던 값을 없애기 위해 unset
명령어를 사용하며, $
표시는 없습니다.
한편, 명령어는 변수의 값을 참조할 겁니다.
작성자가 맥락을 약간 이상하게 사용했는데,
명령어에 변수 이름을 넣으면, 변수의 값을 참조 한다는 의미이며,$
표시 없이unset
명령어를 통해 설정했던 변수를 제거한다는 의미이다.
$ unset MY_VARIABLE
위와 같은 방식으로 생성된 변수들은 오로지 현재 쉘에서만 사용 할 수 있습니다.
하지만,
/etc/profile
혹은 ~/.bashrc
혹은 ~/.bash_profile
과 같은 시작 파일에,
변수들을 저장할 수 있으므로, 당신이 매번 쉘을 시작할 때 생성한 변수들을 사용 할 수 있습니다.
PATH of programs - 프로그램의 경로
반드시 알아야 할 변수들 중 하나는 PATH
입니다.
사실, 이는 프로그램이 탐색되는 디렉토리의 리스트입니다.
이는 주로 시작 파일들 중 하나에 저장됩니다.
만약 당신이 이 변수가 당신의 시스템에서 어떤 변수를 담고 있는지 살펴본다면,
이와 같은 것을 발견 할 수 있습니다 :
$ echo $PATH
PATH=/home/hagrid/.local/bin: /bin: /usr/bin: /usr/local/bin: /sbin: /usr/sbin: /usr/local/sbin
당신의 명령어 결과는 약간 다를 것이지만, 이는 배포판에 의존합니다.
윈도우, 맥, 리눅스 등등 서로
$PATH
의 결과는 다르다는 의미이다.
당신의 프로그램이 포함된 디렉토리를 PATH
에 추가 할 수 있으며,
그리고 나서 이와 같이 환경 변수로 내보낼 수 있습니다 :
PATH=$PATH:/path-to-your-directory
export PATH
당신이 이를 유지하고 싶다면, 시작 파일 중 하나에 위의 줄들을 넣어야 합니다.
Aliases - 별칭
Aliases(별칭) 은 편의성에 따라 정의 할 수 있는 명령어를 위한 단축키이거나, 바로가기입니다.
예를 들어, 명령어의 이름을 수정하거나,
많은 옵션들을 가지고 있는 명령어 대신 더 짧은 무언가를 입력 할 수 있습니다.
alias
명령어는 이와 같이 사용됩니다 :
alias name-of-alias='command'
=
앞뒤에 공백은 없어야 한다는 것을 기억하고 조심하세요
rm
명령어에 대한 별칭을 설정함으로서, 항상 interactive 모드가 될 수 있게 해 줍시다 :
rm -i
는, 어떠한 파일 혹은 디렉토리를 삭제 할 때, 항상 사용자에게 물어본다.
alias rm="rm -i"
-f
(force - 강제) 옵션은 -i
(interactive - 상호작용) 옵션보다 더 우선조건이므로,
rm -rf /
는 당신에게 경고하지 않고 삭제한다는 것을 기억하세요!
미리 정의된 모든 별칭과 당신의 시스템에서 당신에 의해 별칭된 집합을 보기 위해서,
어떠한 전달 arguments 없이 alias
를 입력하세요.
$ alias
alias cp='cp -i'
alias df='df -h'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'
alias free='free -m'
alias grep='grep --colour=auto'
alias ls='ls --color=auto'
alias more='less'
alias np='nano -w PKGBUILD'
alias rm="rm -i"
환경에서 별칭을 지우기 위해서, unalias
명령어를 사용하세요 :
unalias rm
위에서 변수들을 저장했듯이, 변수에서, 만약 당신이 또다른 세션에서 사용하기 위해 별칭을 저장하고 싶다면,
당신의 시작 파일들 중 하나에 별칭을 저장하세요.
Conclusion - 결론
지금까지 배운 내용들을 요약 해 봅시다 :
- 쉘과 환경 변수들은 별칭과 함께 환경의 중요한 부분입니다.
- 쉘 변수들은
export
명령어로 환경 변수 중 하나가 될 수 있습니다. - 쉘에서 변수를 생성하기 위해
VARIABLE="value"
템플릿을 따르며,
변수를 사용하기 위해서 변수의 이름 앞에$
표시를 입력하여 사용합니다. -$VARIABLE
$PATH
변수는 당신의 프로그램이 탐색되는 디렉토리들을 저장하며,
새로운 디렉토리를 추가함으로서 업데이트됩니다.- aliases(별칭) 은 간단히, 편의를 위한 명령어들의 바로가기이며,
alias
명령어로 설정됩니다.
words to remember
expressed : 표현하다, 표하다, 짜내다, 풍기다
synonyms : 바로가기, 동의어, 유의어, 이명,
shortcuts : 단축키, 지름길
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
File modes and permissions - 파일 모드와 권한 (0) | 2024.08.04 |
---|---|
Getting data from net - wget, curl 사용법 (0) | 2024.08.03 |
Agile development - 애자일 개발 단계 설명 (0) | 2024.08.01 |
Domains - 도메인 (0) | 2024.07.31 |
Using external workflows - 외부 워크플로우 사용하기 (0) | 2024.07.30 |