이름으로 호출된 명령이 전체 경로로 호출될 때 다르게 동작하는 이유는 무엇입니까?

이름으로 호출된 명령이 전체 경로로 호출될 때 다르게 동작하는 이유는 무엇입니까?

kill --verbose ...Bash 스크립트에서 사용하고 싶지만 오류가 발생합니다 kill: -verbose: invalid signal specification. 이것은 물고기에서 아주 잘 작동하기 때문에 이상합니다. 조사 결과 다음과 같은 이상한 행동이 발생했습니다.

$ which kill
/usr/bin/kill
$ sleep 5 & kill --verbose $!
[1] 33730
bash: kill: -verbose: invalid signal specification
... wait for sleep to finish ... 
[1]+  Done                    sleep 5
$ sleep 5 & /usr/bin/kill --verbose $!
[1] 33964
sending signal 15 to pid 33964
[1]+  Terminated              sleep 5

무슨 일이야? kill플래그가 인식되지 않지만 --verbose== /usr/bin/kill인 경우 인식되는 이유는 무엇입니까 ?which kill/usr/bin/kill

답변1

which오해의 소지가 있는; type다음으로 변경해 보세요:

$ type kill
kill is a shell builtin

bash를 실행하면 kill인식되지 않는 내장 명령이 사용됩니다 . 전체 경로를 지정하면 실제로 지원되는 --verbose외부 명령이 대신 실행됩니다 (귀하의 경우)./usr/bin/kill--verbose

관련 정보