gsettings를 설정하고 싶어서 /usr/bin/gsettings
별칭을 만들었습니다. 하지만 이것이 작동하는지 확실하지 않습니다.
$ type gsettings
gsettings is aliased to `/usr/bin/gsettings'
gsettings is /home/linuxbrew/.linuxbrew/bin/gsettings
gsettings is /usr/bin/gsettings
$ which gsettings
/home/linuxbrew/.linuxbrew/bin/gsettings
또 다른 예는 다음과 같습니다.
$ type pandoc
pandoc is aliased to `/usr/bin/pandoc'
pandoc is /home/linuxbrew/.linuxbrew/bin/pandoc
pandoc is /usr/bin/pandoc
pandoc is /home/nikhil/.cabal/bin/pandoc
$ which pandoc
/home/linuxbrew/.linuxbrew/bin/pandoc
질문
bash에 입력할
pandoc
때 pandoc 및 gsettings의 어떤 바이너리가 실행되는지 누군가가 명확히 할 수 있습니까?gsettings
명령 출력 순서가
type
의미가 있나요?
노트
$ type type
type is a function
type ()
{
builtin type -a "$@"
}
type is a shell builtin
답변1
예, 순서가 중요합니다. 출력의 첫 번째 항목이 type
실행될 항목입니다. 따라서 귀하의 경우 pandoc
별칭이 실행되고 /usr/bin/pandoc
작동 gsettings
합니다 /usr/bin/gsettings
.
실제로 이 동작이 문서화된 위치를 찾을 수 없습니다. 명시된 첫 번째 결과가 type -a
실행될 항목이지만, 별칭을 설정 해제한 다음 재설정하면 해당 동작을 볼 수 있습니다. 예를 들면 다음과 같습니다.
$ type -a ls
ls is aliased to `ls --color=tty'
ls is /sbin/ls
ls is /usr/bin/ls
$ unalias ls
$ type -a ls
ls is /sbin/ls
ls is /usr/bin/ls
$ alias ls='ls --color=tty'
$ type -a ls
ls is aliased to `ls --color=tty'
ls is /sbin/ls
ls is /usr/bin/ls
보시다시피 별칭을 다시 추가하면 처음으로 돌아갑니다. 비교:
$ touch ~/bin/ls; chmod 755 ~/bin/ls
$ type -a ls
ls is aliased to `ls --color=tty'
ls is /sbin/ls
ls is /home/terdon/bin/ls
ls is /usr/bin/ls
~/bin/ls
별칭 뒤(별칭은 항상 우선순위를 가짐), 이후 /sbin/ls
및 이전에 표시되는 새로운 가짜 명령을 추가했습니다 /usr/bin/ls
. 이것이 바로 실행 순서입니다. my 에서 디렉터리 순서를 검사하면 확인할 수 있습니다 $PATH
.
$ echo "$PATH"
/sbin:/usr/sbin:/home/terdon/bin:/usr/local/bin:/usr/local/sbin:/usr/bin
/home/terdon/bin
전후 /sbin
상황 /usr/bin
과 이 순서가 출력에 어떻게 반영되는지 확인하세요 type
.
마지막으로 어느 것이 실행될지 아는 가장 쉬운 방법은 type
다음을 실행하는 것 입니다 -a
.
$ type ls
ls is aliased to `ls --color=tty'
항상 하나의 항목만 반환하며, 이 항목은 이 명령을 사용할 때 실행됩니다.