[linux] 쉘-어떤 명령의 디렉토리를 찾는 방법?

쉘에있을 때 사용할 수있는 유일한 명령은 PATH에 설정된 일부 디렉토리에서 찾을 수있는 명령이라는 것을 알고 있습니다. 심지어 PATH 변수에 어떤 dirs가 있는지 (그리고 이것이 대답 할 수있는 또 다른 좋은 질문입니다) 어떻게 알 수 있는지 알고 싶습니다.

나는 쉘에 와서 다음과 같이 쓴다.

$ lshw

이 명령이 어디에 있는지 알려주는 쉘의 명령을 알고 싶습니다. 즉,이 “실행 파일”이 어디에 있습니까?

다음과 같은 것 :

$ location lshw
/usr/bin

누군가?



답변

Bash 또는 zsh를 사용하는 경우 다음을 사용하십시오.

type -a lshw

대상이 내장, 함수, 별명 또는 외부 실행 파일인지 여부가 표시됩니다. 후자 인 경우에 표시되는 각 장소가 표시됩니다 PATH.

bash$ type -a lshw
lshw is /usr/bin/lshw
bash$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
bash$ zsh
zsh% type -a which
which is a shell builtin
which is /usr/bin/which

Bash에서 함수의 type -a경우 함수 정의도 표시됩니다. declare -f functionname동일한 작업을 수행하는 데 사용할 수 있습니다 (zsh에는 사용 type -a하지 않아야 함).


답변

이처럼 :

which lshw

경로에서 일치하는 모든 명령을 보려면

which -a lshw 


답변

PATH 환경 변수이며 echo 명령으로 표시 할 수 있습니다.

echo $PATH

콜론 문자 ‘로 구분 된 경로 목록입니다.: ‘로

which명령은 명령을 실행할 때 어떤 파일이 실행되는지 알려줍니다.

which lshw

때때로 당신이 얻는 것은 심볼릭 링크의 길입니다. 실제 실행 파일이있는 위치에 대한 링크를 추적하려면 다음을 사용 readlink하여 출력하십시오 which.

readlink -f $(which lshw)

-f매개 변수에 지시readlink 는 심볼릭 링크를 재귀 적으로 도록 합니다.

내 컴퓨터의 예는 다음과 같습니다.

$ which firefox
/usr/bin/firefox

$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh


답변

~$ echo $PATH
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
~$ whereis lshw
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz


답변

TENEX C 쉘인 tcsh 에서 다음 명령을 사용하여 명령의 위치를 ​​표시하거나 내장 명령 인 경우 다음을 수행 할 수 있습니다 where.

tcsh% where python
/usr/local/bin/python
/usr/bin/python

tcsh% where cd
cd is a shell built-in
/usr/bin/cd


답변

Korn 쉘 kshwhence다른 쉘 내장, 매크로 등을 식별하는 내장 기능을 제공합니다. 그러나 which명령이보다 이식 가능합니다.


답변

대안 type -acommand -V

대부분의 경우 첫 번째 결과에만 관심이 있기 때문에 헤드에서 파이프도합니다. 이렇게하면 bash 기능의 경우 화면에 코드가 넘치지 않습니다.

command -V lshw | head -n1