어떤 명령을 근절하기가 왜 그렇게 어려운가요? [폐쇄]

어떤 명령을 근절하기가 왜 그렇게 어려운가요? [폐쇄]

난 이런 곳에서 왔어" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?그리고https://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-scriptwhich나 자신은 잘 알려진 모든 이유로 인해 이에 반대하는 것을 오랫동안 제안해 왔습니다. 그러나 그것은 힘든 싸움처럼 보입니다.

사람들이 이 명령을 포기하도록 만드는 것이 왜 그렇게 어려운가요 which?

처음에 반대와 회의론에 직면했던 다른 많은 POSIX 혁신은 시간이 지남에 따라 일반적인 U*x 사양의 일부가 되었지만, 이는 현장에서 채택이 극도로 불안정한 혁신인 것으로 보입니다.

사람들이 왜 이 특정 POSIX 권장 사항을 기억하는 데 어려움을 겪는지 이해하고 싶습니다. POSIX의 입장이 아직 불안정한 것은 아닐까(우선type, 지금command)? 아니면 POSIX 이름이 command기억하거나 내부화하기 어렵 기 때문인가요 ? (Bash가 POSIX 이전에도 존재했는지 궁금합니다. command어쩌면 의미가 약간 다를 수도 있습니다.) 아니면 여전히 권장되는 모든 웹 사이트 및 포럼 게시물과 which의심할 여지 없이 약간 더 눈에 띄는 이름에 불과합니까?

답변1

command -v직접적인 교체가 아니기 때문입니다 which.

https://github.com/koalaman/shellcheck/issues/1162

which

  • 전체 경로를 출력하고,
  • 쉘 내장 및 기능을 무시하고,
  • 모두 존재하는 경우에만 true를 반환합니다.
  • 별칭 대신 출력함
  • 대시와 달리type -p
  • 대부분의 컴퓨터는 약 5가지 Bash/Linux 버전을 사용하므로 호환되지 않는 구현은 거의 없습니다.

답변2

@ user1133275의 답변 및 관련 의견 외에도 which또는 type사용 중인지 항상 알 수는 없습니다. 개인적으로 제 손가락은 그것을 사용하도록 훈련되어 which있으며 명령 이름이 기억하기 쉽고 직관적이라고 생각합니다. 하지만 실제로는 다음을 사용하고 있습니다 type.

$ which which
$ which type
$ type type
type is a shell builtin
$ type which
which is a function
which () 
{ 
    type -path ${1+"$@"}
}

내일 누군가 더 나은 명령이 나오면 나는 그것을 변경 .profile하고 내 사용자 정의 명령을 계속 사용할 것입니다 which.

한마디로 이름이 기능과 밀접하게 연관되어 있기 때문에 근절이 어려울 것이라고 생각합니다.

관련 정보