쉘에있을 때 사용할 수있는 유일한 명령은 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 쉘 ksh
은 whence
다른 쉘 내장, 매크로 등을 식별하는 내장 기능을 제공합니다. 그러나 which
명령이보다 이식 가능합니다.
답변
대안 type -a
은command -V
대부분의 경우 첫 번째 결과에만 관심이 있기 때문에 헤드에서 파이프도합니다. 이렇게하면 bash 기능의 경우 화면에 코드가 넘치지 않습니다.
command -V lshw | head -n1