대화형 셸 경험이 있지만 모든 것을 대시를 통해 실행하세요.

대화형 셸 경험이 있지만 모든 것을 대시를 통해 실행하세요.

그래서 나는 POSIX 표준과 단순성에 집착하게 되었지만 문자를 탐색할 때 화살표 자동 완성 기능이 없는 것이 싫었고 멋진 쉘 프롬프트를 원했습니다.

어쨌든 Fish나 Zsh와 같은 것을 사용하거나 프런트 엔드에 bash를 추가하여 자동 완성을 수행할 수 있습니다. 화살표를 사용하여 명령에서 앞뒤로 이동할 수 있다는 것은 멋지고 유익한 팁이 될 것입니다. 스크립트가 shebang에서 bash Fish 등을 요구하지 않는 한, Enter 키를 누르면 명령 자체가 대화형이 아닌 Dash에 의해 실행됩니까?

명령을 편안하게 입력하고 싶은데 나머지는 힘들고 쉬울 수 있습니다. Konsole을 사용하고 있지만 Überzug의 콘솔 프롬프트를 허용하도록 변경하는 것을 고려하고 있습니다. (예, GUI가 이유가 있다는 것을 알고 있습니다. LF에만 해당됩니다.) 또한 sh가 konsole에서 dash로 리디렉션되지만 bash로 가라고 말한 것을 잊어버렸습니다.

답변1

대부분의 사람들이 운영하는 방식을 묻는 것 같으니 제가 귀하의 질문을 오해한 것 같습니다. 우리는 상호작용을 위해 대화형 쉘을 사용합니다. 그러나 우리는 스크립트가 일반적으로 다른 쉘에 의해 실행될 것으로 예상합니다.

이것은 일반적으로 "작동"합니다.넓은실행할 대부분의 스크립트에는 shebang 줄이 포함됩니다. 이렇게 하면 스크립트 자체가 인터프리터를 요청할 수 있습니다.가장 가까운필요한 기능 세트에 추가합니다. POSIX 호환성이 필요한 경우 다음을 지정해야 합니다.

#!/usr/bin/sh

또는

#!/usr/bin/env sh

이는 (Debian/Ubuntu 버전의 경우), BusyBox (Alpine의 경우) 또는 다른 것일 dash수 있습니다 . 기본적으로 어떤 쉘이 POSIX와 가장 호환되는지 ash결정하는 것은 배포판에 달려 있습니다 . sh먼 과거에는 일부(대부분?) 경우에이것은 심지어bash.

드문 경우지만 누군가가 셔뱅을 놓친 경우 먼저 나머지 코드의 품질에 회의를 가져보세요. 그러나 실행하는 것은 문제가 되지 않습니다. 단지 문제가 있을 뿐입니다 sh scriptname.sh.

그러나 오늘날의 기본 쉘을 사용하여 실제로 대화식으로 작업을 수행할 수 있을 것이라고 기대하는 사람은 아무도 없습니다. 개인적으로 저는 fish귀하가 언급한 모든 형태의 POSIX 준수와 가장 거리가 먼 를 사용합니다. 하지만 fish이식성이 필요하다면 (가급적이면 최신 스크립팅 언어가 있기 때문에) 또는 POSIX를 사용하여 스크립팅할 수 있습니다. 그것을 처리하는 것은 Shebang이기 때문에 중요하지 않습니다.

그렇지 않은 영역 중 하나는 스크립트가 필요하다는 것입니다.원천, 현재 쉘 인스턴스의 환경을 변경하기 때문입니다. Shebang이 지정한 인터프리터를 사용하여 실행되지는 않지만대화형 셸 자체에서 실행됩니다. 내가 사용하는 대부분의 소프트웨어는 fish필요할 때 구성 파일을 제공하기 때문에 이것이 문제가 되는 경우는 거의 없습니다 . 하지만 POSIX 파일을 꼭 구해야 하는 드문 경우에는 다음과 같은 방법을 사용할 수 있습니다.베이스그리고 다른 사람들이 이를 수행하는 데 도움을 줍니다.

bash및 의 경우 zsh대부분의 구성 파일이 가장 낮은 공통 분모에 쓰기 때문에 이는 문제가 되지 않습니다. 이는 Zsh 및 bash에서 "POSIX-to-not-matter"가 될 만큼 충분히 근접할 수 있습니다.

관련 정보