리눅스 명령어 where 사용법 및 5가지 옵션

리눅스 명령어 where는 여러 명령어와 프로그램의 위치를 찾을 때 특히 유용합니다. 여러 버전의 소프트웨어가 설치된 경우, 특정 프로그램이 어느 디렉터리에 위치해 있는지 확인해야 하는 경우에 where 명령어가 큰 도움이 됩니다. 이 글에서는 리눅스에서 where 명령어의 사용법과 옵션에 대해 알아보겠습니다.

리눅스 명령어 where란?

리눅스 명령어 where는 사용자가 실행하려고 하는 프로그램이나 명령어가 시스템의 어느 위치에 있는지 찾아주는 기능을 합니다. 이 명령어는 주로 사용자 환경 변수에 설정된 경로(PATH)에서 해당 프로그램을 검색합니다.

그리고 리눅스 명령어 where는 zsh의 builtin 명령어로 zsh 상에서만 사용할 수 있으며, bash에서는 사용할 수 없으므로 which, type, command -v와 같은 명령어를 이용해야 합니다. 리눅스 명령어 which 사용법 및 2가지 옵션리눅스 명령어 type 사용법 및 4가지 옵션에서 관련 내용을 다루었으니 궁금한 분들은 살펴보시기 바랍니다.

기본 사용법

where 명령어의 기본적인 사용법은 매우 간단합니다. 명령어 뒤에 찾고자 하는 프로그램이나 명령어의 이름을 입력하기만 하면 됩니다.

where name ...
ShellScript

예를 들어, python이라는 프로그램의 위치를 찾고 싶다면 다음과 같이 입력하면 됩니다.

where python
ShellScript

이 명령어를 실행하면, 아래 그림과 같이 시스템에 설치된 python 실행 파일의 경로를 출력합니다.

그림 1. 리눅스 명령어 where: python 실행 파일의 경로 출력

그리고 아래와 같이 여러 명령어를 입력하면 명령어들의 경로를 동시에 출력해 줍니다.

그림 2. 리눅스 명령어 where: 여러 명령어 동시에 탐색

where 명령어의 유용한 옵션들

리눅스에서 where 명령어는 다양한 옵션을 제공합니다. 이러한 옵션을 활용하면 특정 상황에 더 적합한 검색 결과를 얻을 수 있습니다. 주요 옵션은 다음과 같습니다.

-w 옵션: 명령어 유형

-w 옵션을 사용하면, 해당 명령어가 어떤 명령어에 해당하는지 보여줍니다. alias, builtin, command, function, hashed, reversed 또는 none으로 표현됩니다.

where -w name
ShellScript

이 옵션은 특정 명령어의 종류를 확인할 때 유용합니다. 아래 그림을 보면 which 명령어는 builtin 명령어이기도 하면서 command 이기도 한 것을 알 수 있습니다.

그림 3. 리눅스 명령어 where: -w 옵션을 이용해서 명령어 유형 출력

-p 옵션: 경로 출력

-p 옵션은 명령어 파일 경로를 출력할 때 사용합니다.

where -p name
ShellScript

앞서 which 명령어는 2개의 command가 있음을 확인했습니다. -p 옵션을 이용하면 해당 명령어들의 경로를 모두 보여줍니다.

그림 4. 리눅스 명령어 where: -p 옵션으로 실행파일의 경로 출력

-m 옵션: 패턴으로 탐색

-m 옵션을 이용할 때에는 와일드 카드 등을 함께 사용하여 패턴으로 명령어를 함께 탐색할 수 있습니다. 이 경우 패턴은 따옴표를 이용하여 감싸야 합니다.

where -m "whe*"
ShellScript

위의 패턴은 whe로 시작하는 모든 명령어를 탐색합니다. 아래 그림에서는 shell built-in command와 경로를 통해 명령어의 위치를 알려주고 있습니다.

그림 5. 리눅스 명령어 where: -m 옵션으로 패턴 탐색

-s 옵션: 심볼릭 링크

명령어가 심볼릭 링크에 해당한다면, 심볼릭 링크의 원본 파일 경로까지 함께 출력해 줍니다.

where -s name
ShellScript

아래와 같이 -s 옵션을 사용한 경우, 왼쪽에 심볼릭 링크 화살표(->) 오른쪽에 대상 파일을 보여줍니다.

그림 6. 리눅스 명령어 where: -s 옵션으로 심볼릭 링크의 원본 경로 출력

-S 옵션: 심볼릭 링크 모든 경로

소문자로 사용하는 -s 옵션과 비슷하게 심볼릭 링크의 원본 파일 경로를 보여주는데, 중간 경로가 있다면 중간 경로들을 모두 보여주는 옵션입니다. 대문자 -S 옵션은 심볼릭 링크가 걸린 순서들을 추적해야 할 때 유용하게 사용할 수 있습니다.

where -S name
ShellScript

아래와 같이 보다 상세한 심볼릭 링크의 경로를 확인할 수 있습니다.

그림 7. 리눅스 명령어 where: -S 옵션으로 상세한 심볼릭 링크 경로 출력

명령어 사용 시 주의사항

where 명령어를 사용할 때 몇 가지 주의할 점이 있습니다.

  1. zsh에서만 사용 가능: zsh 상에서만 실행할 수 있는 zsh built-in command입니다. bash 셸에서는 실행되지 않는다는 점 잊지 마세요.
  2. 알아두면 좋은 명령어들: where 외에도 비슷한 기능을 하는 명령어로 whichtype이 있습니다. which는 명령어의 첫 번째 경로만 출력하고, type은 명령어가 내장 명령어인지 외부 명령어인지 등을 구분해주는 기능을 합니다. 필요에 따라 적절한 명령어를 선택하여 사용하면 좋습니다.

활용 방법 및 숨겨진 기능

where 명령어는 단순히 프로그램의 위치를 찾는 것 외에도 여러 가지로 활용할 수 있습니다. 예를 들어, 스크립트를 작성할 때 특정 프로그램이 존재하는지 확인하고, 그에 따라 다른 동작을 수행하도록 할 수 있습니다.

또한, 시스템의 PATH 설정을 변경하거나 프로그램의 버전을 관리할 때도 where 명령어가 유용하게 사용됩니다. 특히, 여러 버전의 프로그램이 설치된 환경에서 특정 버전의 프로그램을 사용할 때, 해당 경로를 확인하고 경로 우선순위를 조정할 수 있습니다.

정리

리눅스 시스템에서 where 명령어는 프로그램이나 명령어의 위치를 쉽게 확인할 수 있는 매우 유용한 도구입니다. 다양한 옵션을 활용하여 더욱 효율적으로 사용해 보세요. 다만, zsh built-in command이므로, zsh에서만 사용할 수 있습니다. 기본적인 명령어 사용법을 숙지하고 있으면 리눅스 시스템을 보다 능숙하게 다룰 수 있습니다.

리눅스 환경에서의 작업은 다양한 명령어들을 얼마나 잘 활용하는지에 따라 그 효율성이 크게 달라집니다. 앞으로도 다양한 명령어를 익혀가며 리눅스의 세계를 더욱 깊이 탐구해 보시기 바랍니다.

참고자료

관련 포스트

Leave a Comment