alias 명령어: 별칭 만들기와 unalias 삭제, ~/.bashrc 영구 설정

alias 명령어는 자주 입력하는 명령에 짧은 이름을 붙여, 그 이름만 입력해도 원래 명령이 실행되게 하는 bash 내장 명령입니다. AlmaLinux 9 서버에서 별칭을 만들고 지워 본 결과, 별칭은 만든 셸 안에서만 유지되었고 ~/.bashrc에 한 줄을 더하자 새로 연 셸에서도 그대로 남았습니다.
아래 출력은 AlmaLinux 9.8 서버의 root 계정에서 실행한 결과이고, Debian 12 서버에서는 일반 계정의 별칭을 확인했습니다. 별칭을 만들고 지우는 실습은 시작 파일을 읽지 않는 새 셸에서 진행해 직접 만든 별칭만 나오게 했습니다. 영구 설정은 따로 만든 빈 홈 폴더에서 확인했고, 명령에는 그 폴더 경로 대신 ~/.bashrc로 적었습니다.
1️⃣ alias 명령어 기본 사용법
별칭은 [alias 이름='명령'] 꼴로 만듭니다. 파일을 수정 시각 순으로 출력하는 [ls -lt]에 lt라는 이름을 붙였습니다.
흔히 쓰는 ll은 RHEL 계열 배포판이 미리 만들어 둔 [ls -l --color=auto] 별칭이라, 겹치지 않게 lt로 만들었습니다. 기본 별칭은 2️⃣ 표에서 확인할 수 있습니다.
alias lt='ls -lt'별칭을 만들 때는 아무것도 출력되지 않았습니다. 이어서 lt만 입력하자 [ls -lt]를 실행한 것과 같은 목록이 나왔습니다.
lttotal 12
-rw-r--r-- 1 root root 25 Oct 29 01:52 app.log
drwxr-xr-x 2 root root 6 Oct 29 01:40 logs
-rw-r--r-- 1 root root 11 Oct 29 01:25 notes.txt
-rw-r--r-- 1 root root 28 Oct 29 01:10 report.txt등호 앞뒤에 빈칸을 넣으면 bash는 lt와 =, ls -lt를 각각 확인할 별칭 이름으로 인식합니다. 그래서 별칭은 만들어지지 않았고, 세 이름마다 [not found]가 나왔습니다.
alias lt = 'ls -lt'bash: alias: lt: not found
bash: alias: =: not found
bash: alias: ls -lt: not foundbash는 한 줄을 끝까지 읽은 다음 별칭을 바꿔 넣으므로, 새로 정의한 별칭은 다음 줄부터 사용할 수 있습니다. 별칭이 없는 새 셸에서 정의와 실행을 세미콜론(;)으로 한 줄에 이어 쓰자 [lt: command not found]가 나왔고, 다음 줄에 다시 입력한 lt는 목록을 출력했습니다.
alias lt='ls -lt'; ltbash: lt: command not found별칭을 붙일 명령은 자주 입력하는 긴 명령에서 고르게 됩니다. history 명령어로 지난 입력을 보면 같은 옵션 조합을 되풀이한 명령을 찾을 수 있습니다.
2️⃣ alias 목록 확인과 unalias
직접 만들지 않아도, root 계정으로 로그인한 셸에는 이미 여러 별칭이 정의되어 있습니다. 인자 없이 alias를 실행하면 지금 셸의 별칭이 이름 순으로 모두 나옵니다. AlmaLinux 9.8 서버의 root 계정에서 확인한 배포판 기본 별칭은 아래 15개입니다. 운영자가 직접 더한 별칭과 따로 설치한 프로그램이 넣은 별칭은 출력에서 빼고 옮겼습니다.
aliasalias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'rm, cp, mv의 -i는 root 계정의 ~/.bashrc가 정의하고, 나머지는 /etc/profile.d 아래 color로 시작하는 스크립트가 정의합니다.
| 별칭 | 값 | 정의한 파일 |
|---|---|---|
| rm, cp, mv | rm -i, cp -i, mv -i | ~/.bashrc(root 계정) |
| ls, ll, l. | ls --color=auto, ls -l --color=auto, ls -d .* --color=auto | /etc/profile.d/colorls.sh |
| grep, egrep, fgrep | 명령 이름 + --color=auto | /etc/profile.d/colorgrep.sh |
| xzgrep, xzegrep, xzfgrep | 명령 이름 + --color=auto | /etc/profile.d/colorxzgrep.sh |
| zgrep, zegrep, zfgrep | 명령 이름 + --color=auto | /etc/profile.d/colorzgrep.sh |
rm을 입력했을 때 지울지 묻는 것도 이 별칭 때문입니다. [type rm]으로 확인하자 rm이 rm -i의 별칭으로 나왔습니다.
type rmrm is aliased to `rm -i'시작 파일을 읽지 않는 새 셸에는 기본 별칭이 없어, 직접 만든 별칭만 나옵니다. 이 셸에서 먼저 lt를 만들었습니다.
alias lt='ls -lt'이어서 현재 시각을 출력하는 now도 만들었습니다. date의 +%T는 시각을 시:분:초로만 출력하는 형식입니다.
alias now='date +%T'alias를 실행하자 직접 만든 두 별칭만 이름 순으로 나왔고, 이름을 하나 적자 그 별칭의 값만 출력되었습니다.
aliasalias lt='ls -lt'
alias now='date +%T'alias ltalias lt='ls -lt'별칭은 [unalias 이름]으로 지웁니다. 지운 별칭은 지금 셸의 목록에서 바로 빠집니다.
unalias ltlt를 지운 뒤 다시 확인하자 [alias: lt: not found]가 나왔고, 이미 지운 lt를 한 번 더 지우려 하자 unalias도 같은 꼴의 문구를 출력했습니다.
alias ltbash: alias: lt: not foundunalias ltbash: unalias: lt: not found[unalias -a]는 지금 셸의 별칭을 모두 지웁니다.
unalias -a실행한 뒤 alias를 입력하자 아무것도 출력되지 않았습니다. unalias는 지금 셸에서만 지우므로, 시작 파일에 적힌 별칭은 셸을 새로 열면 다시 정의됩니다.
3️⃣ alias 따옴표와 별칭 건너뛰기
별칭 값에 변수가 들어가면 따옴표에 따라 변수를 읽는 시점이 달라집니다. 비교를 위해 name 변수에 web1을 넣었습니다.
name=web1그다음 echo 명령어로 name을 출력하는 명령을 작은따옴표로 감싸 별칭 sq로 만들었습니다.
alias sq='echo $name'같은 명령을 큰따옴표로 감싼 dq도 만들었습니다.
alias dq="echo $name"alias로 두 값을 확인하자, 큰따옴표로 만든 dq에는 정의하던 순간의 값 web1이 이미 들어가 있었습니다.
alias sq dqalias sq='echo $name'
alias dq='echo web1'name을 web2로 바꾼 뒤 두 별칭을 실행했습니다.
name=web2sq는 바뀐 값 web2를, dq는 정의할 때의 값 web1을 출력했습니다.
sqweb2dqweb1작은따옴표는 $name을 글자 그대로 저장해 실행할 때마다 변수를 다시 읽습니다. 큰따옴표는 정의하는 순간 값을 바꿔 넣으므로, 실행할 때마다 달라지는 값을 읽어야 하는 별칭에는 맞지 않습니다.
별칭과 이름이 같은 원래 명령을 실행해야 할 때도 있습니다. ls에 -F를 붙이는 별칭을 만들었습니다.
alias ls='ls -F'이 별칭을 만든 뒤 ls를 실행하자, 폴더 logs 뒤에 /가 붙었습니다.
lsapp.log logs/ notes.txt report.txt명령 앞에 역슬래시(\)를 붙이거나 command 뒤에 명령을 적으면 별칭을 건너뛰고 원래 명령을 실행합니다. 두 경우 모두 logs 뒤의 /가 사라졌습니다.
\lsapp.log logs notes.txt report.txtcommand lsapp.log logs notes.txt report.txt명령이 별칭인지는 [type 이름]으로 확인합니다. -a를 붙이자 별칭 아래에 실제 파일 경로 /usr/bin/ls까지 함께 나왔습니다.
type lsls is aliased to `ls -F'type -a lsls is aliased to `ls -F'
ls is /usr/bin/ls-t는 종류만 한 낱말로 출력하며, 별칭이 있을 때는 alias가 나왔습니다.
type -t lsalias[unalias ls]로 별칭을 지운 뒤 같은 명령을 다시 실행하자 file이 나왔습니다.
type -t lsfilefile은 디스크에 있는 실행 파일이라는 뜻이고, cd 같은 셸 내장 명령은 builtin으로 나옵니다.
4️⃣ alias 영구 설정과 옵션
unalias로 지우지 않아도, alias로 만든 별칭은 그 셸을 닫으면 사라집니다. bash는 로그인 셸이 아닌 대화형 셸을 열 때 ~/.bashrc를 읽고, RHEL 계열의 기본 ~/.bash_profile도 로그인할 때 ~/.bashrc를 읽어 들입니다. 그래서 셸을 새로 열어도 쓸 별칭은 ~/.bashrc 끝에 alias 줄로 더합니다.
echo "alias lt='ls -lt'" >> ~/.bashrc>>는 파일 끝에 덧붙이는 기호라, 기존 내용 뒤에 이 한 줄이 더해집니다. tail로 파일 끝을 출력해 추가한 줄을 확인했습니다.
tail -n 1 ~/.bashrcalias lt='ls -lt'파일에 적은 줄은 지금 열려 있는 셸에 바로 들어가지 않습니다. 시작 파일을 읽지 않고 연 셸에서 lt를 확인하자 [not found]가 나왔습니다.
alias ltbash: alias: lt: not foundsource ~/.bashrcsource는 파일을 지금 셸 안에서 그대로 실행하는 bash 내장 명령이라, 셸을 새로 열지 않아도 파일에 적은 별칭이 들어옵니다. source 뒤에 다시 확인하자 lt가 정의되어 있었습니다.
alias ltalias lt='ls -lt'새로 여는 셸은 source 없이도 ~/.bashrc의 별칭을 읽습니다. 반대로 지금 셸에서 alias로만 만든 별칭은 새 셸로 이어지지 않습니다. 이를 확인하려고 지금 셸에서 now를 만들었습니다.
alias now='date +%T'[bash -i -c alias]는 새 대화형 셸을 하나 열어 alias만 실행하고 닫는 명령입니다. 그 셸의 목록에는 now가 없고 ~/.bashrc에 적은 lt만 나왔습니다.
bash -i -c aliasalias lt='ls -lt'Debian 12 서버의 일반 계정은 ~/.bashrc가 ~/.bash_aliases 파일을 읽도록 되어 있었습니다. 그 계정에서 alias를 실행하자 ~/.bashrc가 정의한 ls와 ~/.bash_aliases에 적힌 ll이 함께 나왔습니다.
aliasalias ll='ls -l'
alias ls='ls --color=auto'AlmaLinux 9의 일반 계정용 기본 ~/.bashrc에는 ~/.bashrc.d 폴더를 확인하는 줄이 있습니다.
grep -n bashrc.d /etc/skel/.bashrc19:if [ -d ~/.bashrc.d ]; then
20: for rc in ~/.bashrc.d/*; do이 줄 다음의 for 문이 폴더 안의 파일을 하나씩 읽어 들이므로, 별칭이 많으면 이 폴더에 파일을 따로 두고 관리할 수 있습니다.
🔲 alias 명령어 옵션
| 옵션 | 복사 | 설명 |
|---|---|---|
| unalias -a | 지금 셸의 별칭을 모두 삭제 | |
| alias -p | 별칭 목록을 alias 이름=값 꼴로 출력 |
🔲 alias 명령어 시뮬레이터
아래 시뮬레이터는 RHEL 계열 root 계정의 기본 별칭이 들어 있는 가상 서버입니다. 칩을 눌러 별칭을 만들고 지워 보고, bash로 새 셸을 열어 ~/.bashrc에 적은 별칭이 남는지 확인할 수 있습니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.