Linux / 명령어 / unalias - 명령어 별칭 삭제
unalias는 Bash의 현재 셸에 등록된 별칭을 제거하는 내장 명령입니다. 특정 별칭만 삭제하거나 -a 옵션으로 모든 별칭을 제거할 수 있지만, 시작 파일에 저장된 정의까지 자동으로 지우지는 않습니다.
별칭 때문에 예상과 다른 옵션이 적용되거나 원래 명령을 실행하기 어려울 때 유용합니다. 일시 제거와 영구 제거의 차이를 이해하는 것이 핵심입니다.
unalias 명령어란?
alias가 명령 이름과 치환 문자열을 등록한다면 unalias는 그 등록을 현재 Bash 세션에서 삭제합니다. 삭제 후 같은 이름을 입력하면 Bash는 함수, 내장 명령 또는 PATH의 실행 파일 등 다음 후보를 다시 찾습니다.
이 글은 Bash를 기준으로 합니다. 다른 셸에도 같은 이름의 명령이 있을 수 있지만 지원 옵션과 설정 파일은 다를 수 있습니다.
기본 문법
unalias [-a] [이름 ...]
이름을 하나 이상 지정하면 해당 별칭을 제거합니다. -a는 현재 셸의 모든 별칭을 제거합니다.
특정 별칭 제거하기
alias ll='ls -alF' unalias ll
제거 전후 상태는 다음처럼 확인할 수 있습니다.
alias ll unalias ll type ll
별칭을 제거한 뒤 같은 이름의 함수나 실행 파일이 존재하면 그 대상이 선택될 수 있습니다. 단순히 “명령이 없어졌다”고 가정하지 말고 type -a 이름으로 남은 후보를 확인하는 것이 좋습니다.
여러 별칭 한 번에 제거하기
unalias ll la grep
지정한 이름 가운데 정의되지 않은 별칭이 있으면 unalias는 실패 상태를 반환할 수 있습니다. 자동화 코드에서 결과를 사용할 때는 이 점을 고려하세요.
모든 별칭 제거하기
unalias -a
-a는 현재 셸의 모든 별칭을 삭제합니다. 개인 설정뿐 아니라 배포판이 편의나 안전을 위해 제공한 별칭도 함께 제거될 수 있으므로, 문제 원인을 좁히는 임시 셸이 아니라면 신중하게 사용하세요.
삭제 전에 현재 목록을 보관하려면 다음처럼 출력할 수 있습니다.
alias -p
일시 제거와 영구 제거의 차이
현재 터미널에서만 제거
unalias는 현재 Bash 프로세스의 별칭 테이블만 변경합니다. 터미널을 닫고 새 셸을 시작하면 ~/.bashrc 같은 시작 파일에 있는 별칭이 다시 정의됩니다.
새 터미널에서도 제거
별칭을 영구적으로 제거하려면 별칭을 정의한 설정 파일을 찾아 해당 줄을 삭제하거나 주석 처리해야 합니다.
grep -n "alias ll=" ~/.bashrc ~/.bash_aliases 2>/dev/null
설정을 수정한 뒤 새 셸을 열거나 다음 명령으로 현재 셸에 다시 적용합니다.
source ~/.bashrc
시스템 전체 설정인 /etc/bash.bashrc 또는 /etc/profile.d/에서 정의될 수도 있습니다. 시스템 파일을 바꾸기 전에 사용자 설정에서 다시 정의하거나 필요한 세션에서만 제거하는 방법을 먼저 검토하세요.
삭제하지 않고 한 번만 별칭 우회하기
원래 명령을 한 번만 실행하려는 목적이라면 별칭을 삭제할 필요가 없습니다. 명령 이름 앞에 백슬래시를 붙이거나 실행 파일의 절대 경로를 사용할 수 있습니다.
\ls /usr/bin/ls
백슬래시는 해당 단어가 별칭으로 확장되는 것을 막습니다. 절대 경로는 PATH 검색과 같은 이름의 함수까지 피하면서 지정한 파일을 실행합니다.
별칭, 함수와 변수는 제거 방법이 다릅니다
| 대상 | 제거 명령 | 확인 방법 |
|---|---|---|
| 별칭 | unalias 이름 |
alias 이름 또는 type 이름 |
| 셸 함수 | unset -f 이름 |
declare -F 이름 또는 type 이름 |
| 셸 변수 | unset 이름 |
declare -p 이름 |
| 실행 파일 | 파일 관리 명령 사용 | type -a 이름 또는 command -v 이름 |
unalias는 이름이 같은 함수나 파일을 삭제하지 않습니다. 명령의 종류를 잘못 판단하면 원하는 대상이 그대로 남을 수 있으므로 먼저 type으로 확인하세요.
스크립트에서 안전하게 사용하기
정의되어 있을 때만 제거하려면 먼저 alias의 종료 상태를 확인할 수 있습니다.
if alias ll >/dev/null 2>&1; then unalias ll fi
다만 비대화형 Bash는 기본적으로 별칭 확장을 하지 않으므로 일반 스크립트가 사용자 별칭을 제거해야 할 상황은 많지 않습니다. 스크립트가 대화형 셸의 개인 설정에 의존하지 않도록 작성하는 편이 좋습니다.
자주 발생하는 문제
unalias 후 새 터미널에서 별칭이 다시 생깁니다.
~/.bashrc, ~/.bash_aliases 또는 시스템 시작 파일에서 다시 정의되고 있기 때문입니다. 정의 위치를 찾아 수정해야 합니다.
unalias: not found 오류가 나옵니다.
지정한 이름이 현재 셸의 별칭이 아닐 가능성이 큽니다. type -a 이름으로 함수, 내장 명령 또는 실행 파일인지 확인하세요.
명령 동작이 여전히 달라 보입니다.
같은 이름의 셸 함수가 있거나 실행 파일이 여러 경로에 존재할 수 있습니다. type -a 이름으로 모든 후보를 확인하고, 필요하면 hash -r로 Bash의 명령 경로 캐시를 비운 뒤 다시 점검하세요.
사용 상황별 선택
| 상황 | 권장 방법 |
|---|---|
| 원래 명령을 한 번만 실행 | \이름 또는 절대 경로를 사용합니다. |
| 현재 터미널에서 별칭 제거 | unalias 이름을 사용합니다. |
| 모든 별칭으로 인한 영향을 임시 제거 | 목록을 확인한 뒤 unalias -a를 사용합니다. |
| 새 터미널에서도 제거 | 별칭이 정의된 시작 파일을 수정합니다. |
| 같은 이름의 함수 제거 | unset -f 이름을 사용합니다. |
자주 묻는 질문
unalias -a를 실행하면 복구할 수 있나요?
현재 셸의 별칭 정의를 직접 되돌리는 기능은 없습니다. 시작 파일에 저장된 별칭은 source ~/.bashrc로 다시 불러올 수 있지만, 명령줄에서만 만든 별칭은 다시 정의해야 합니다.
unalias는 다른 터미널에도 영향을 주나요?
아닙니다. 각 터미널의 셸 프로세스는 별도의 별칭 테이블을 가지므로 현재 셸에서 실행한 unalias는 다른 셸에 직접 영향을 주지 않습니다.
삭제한 별칭과 같은 이름을 입력하면 무엇이 실행되나요?
Bash는 남아 있는 함수, 내장 명령과 PATH의 실행 파일 등을 명령 탐색 규칙에 따라 찾습니다. 실제 선택 결과는 type 이름으로 확인할 수 있습니다.









