![이름으로 호출된 명령이 전체 경로로 호출될 때 다르게 동작하는 이유는 무엇입니까?](https://linux55.com/image/194309/%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%ED%98%B8%EC%B6%9C%EB%90%9C%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%A0%84%EC%B2%B4%20%EA%B2%BD%EB%A1%9C%EB%A1%9C%20%ED%98%B8%EC%B6%9C%EB%90%A0%20%EB%95%8C%20%EB%8B%A4%EB%A5%B4%EA%B2%8C%20%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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