alias는 별칭이라는 뜻입니다. 예를 들어서 A라는 이름을 가진 사람을, B라고 부를 수 있습니다. 이 때, B는 A의 별칭 (별명) 이라고 많이 이야기를 합니다. 명령어도 다르게 부를 수 있는데요. 예를 들어서, ll은 'ls -l --color=auto'의 다른 이름이라고 할 수 있어요. 엄청나게 긴 것을 단 2글자로 압축을 할 수도 있어요. 이 정도만 보면 꽤 대단하고 위력적인 것임을 알 수 있습니다. alias만 쉘에 쳐 보면, 현재 별칭이 적용되어 있는 것들만 출력이 됩니다.

 


 먼저, 명령어 A를 B라는 이름으로 다시 부르게 하도록 하기 위해 등록하는 명령어는 alias B = 'A'입니다. 예를 들어서, head 라는 명령어를 hd라는 이름으로 다시 부르게 하려면, alias hd = 'head'가 될 거에요. 그러면 아래와 같이 명령어를 작성하시면 됩니다.

 

 

 그러면 이 의미는 head라는 명령어를 hd로 별칭을 붙이라는 의미입니다. 이제 명령을 수행해 봅시다. head는 아무런 옵션이 없다면, 첫 줄부터 10번째 줄까지 파일의 내용을 출력합니다. 1.txt에는 "chogahui05" 라는 내용만 들어있습니다.

 

 

 hd는 head의 별칭이기 때문에, hd 1.txt를 해도 1.txt의 10번째 줄까지의 내용이 모두 출력됩니다.

 

 

 1번째 탭에 있는 Shell에서 hd가 먹혔습니다. 이것은 제가 1번째 탭의 쉘에서, alias hd ~ 를 수행했기 때문입니다. 터미널을 클릭해서, 새로운 shell을 열었습니다. 그리고 똑같이 alias를 수행해 보았습니다. 그런데 이게 왠 말입니까?

 

 

 hd가 보이지 않습니다. 그냥 쉘에다가만 친 경우에, 다른 쉘을 open 했을 때 적용이 되지 않았음을 볼 수 있어요. 그러니, 제가 hd 1.txt를 쳐도 명령어를 찾을 수 없다고 이야기를 하는 것입니다.

 

 


 그러면, 별칭을 해제하려면 어떻게 하면 좋을까요? 보통 반대되는 접두사로 un- 도 꽤 많이 쓰이는 편이에요. 불행한이라는 뜻을 가진 unfortunate는 fortunate의 반대말이기도 합니다. B라는 별칭을 없앨 때, unalias B 이렇게 작성합니다.

 

 

 예를 들어서, unalias ll을 쳐 봅시다. 그러면 이것은 ll이라는 별명을 없앱니다. 보시면 1번째 탭에서 이 명령어를 수행했어요. 그 다음에, 1번째 tab에서 ll을 치면 명령을 찾을 수 없다는 메세지가 뜹니다.

 

 

 그러면, 2번째 탭에서는 어떨까요? ll을 쓸 수 있을까요? 아니면 삭제가 되었으니까 쓸 수 없을까요? hd라는 operation을 1번째 탭의 쉘에 추가했을 때를 생각해 봅시다. 이 때, hd는 1번째에서는 먹혔지만, 2번쨰, 그러니까 별개의 shell에서는 먹히지 않았어요. 이것은 어떻게 해석을 할 수 있을까요?

 

 1번째 터미널에서 별칭 Set이 명령어를 실행해서, 바뀌었다고 한들, 2번째 터미널에는 영향을 끼치지 않았어요. 별칭을 해제한다고 하면, 별칭 Set이 바뀔 거에요. 해제한 곳에서만. 그렇지 않은 곳에서는 그대로 있을 거에요. 정말 그런지, 다른 터미널을 열어서 실행시켜 봅시다.

 

 

 그러면 멀쩡하게 잘만 나오고 있음을 확인할 수 있어요. 1번째 탭에서 alias를 쳐 봅시다.

 

 

 여기에서는 아무리 그 목록을 찾아봐도 ll이라는 것이 보이지 않는다는 것과 대조적임을 알 수 있습니다.

 

 


 그러면 터미널을 새로 열면 어떻게 될까요?

 

 hd는 명령어를 찾을 수 없다고 뜹니다. 당연하게도, 새로 열었을 때, hd라는 operation은 추가하지 않았기 때문입니다. 그런데 ll은 잘 나온다는 것을 확인할 수 있는데요. 이는 이것이 열릴 때 어딘가에서 별칭 ll에 대한 정보를 불러와서 초기화를 하고 있다는 이야기가 됩니다.

 

 이것은 다음에 다뤄보도록 하겠습니다.