명령에서 "&& bash"의 목적("&&" 부분이 아니라 "bash" 부분)

명령에서 "&& bash"의 목적("&&" 부분이 아니라 "bash" 부분)

방금 웹페이지에서 다음 명령 목록을 보았습니다. 이 명령은 ffmpeg사용자 디렉터리 ~/bin에 정적 버전을 설치합니다 . 이러한 명령은 스크립트의 일부가 아니며 사용자는 명령을 복사하여 셸에 붙여넣어야 합니다. 이 명령이 필요하지도 사용하지도 않지만...

내 질문은 첫 번째 명령과 관련이 있습니다.mkdir -p ~/bin && bash

bash명령에서 이를 사용하는 목적은 무엇입니까? 물론, 나는 새로운 bash 인스턴스가 무엇 &&인지 알고 있으며 아마도 bash새로운 bash 인스턴스를 시작할 것입니다. 그런데 왜 새로운 bash 인스턴스를 시작해야 합니까? 아니면 bash이렇게 사용하면 다른 용도로 사용되나요?

mkdir -p ~/bin && bash
wget -qO ~/ffmpeg.tar.gz http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
tar xf ~/ffmpeg.tar.gz && cd && rm -rf ffmpeg-*-64bit-static/{manpages,presets,readme.txt}
cp ~/ffmpeg-*-64bit-static/* ~/bin
chmod 700 ~/bin/{ffmpeg,ffprobe,ffmpeg-10bit,qt-faststart}
cd && rm -rf ffmpeg{.tar.gz,-*-64bit-static}

답변1

일부 프로그램은 제대로 작동하려면 bash 쉘로 로그인해야 하는데, 이것이 && bash를 사용하는 이유일 수 있습니다.

&& 연산자는 이전 명령이 올바르게 실행된 경우에만 두 번째 명령을 성공적으로 실행합니다. 하지만 이미 알고 있으므로 설치하려는 소프트웨어에는 bash 쉘이 필요하고 다른 쉘은 해당 프로그램에서 작동하지 않을 수 있습니다. 정상적인 일.

답변2

설치 지침이 다소 손상되었습니다.

게시된 셸 코드가 셸 스크립트인 경우 해당 && bash부분은 본질적으로 쓸모가 없습니다. 상호 작용을 시작하고 사용자가 bash셸을 종료할 때까지 거기에 머물거나 현재 사용자의 셸을 사용하여 다음 명령 실행을 다시 시작하기 때문입니다. 그것은.ControlDexit

하지만 작성하신 대로 사용자는 코드를 복사하여 붙여넣어야 합니다. 이 경우 성공하면 && bash조건부로 시작되고 나머지 줄은 해당 인터프리터에 의해 실행됩니다. 여태까지는 그런대로 잘됐다.bashmkdir

첫 번째 질문은 mkdir명령이 실패할 가능성이 낮은 경우에 어떤 일이 발생하는지입니다. 통역사 bash아니요처형된하지만 나머지 모든 행, 전체 쉘 명령 블록이 복사/붙여넣어졌다고 가정하고,어차피 처형될 거야. 또한 사용자가 실행하는 모든 쉘에 의해 실행되므로 중괄호 확장을 이해하지 못하는 쉘일 수 있습니다. 누락된 디렉토리를 참조하는 모든 명령에도 오류가 발생합니다 ~/bin.

두 번째 문제는 첫 번째 경우(성공)에서도 mkdir명령이 실행될 때 사용자가 자신의 홈 디렉터리에 있다고 가정하기 때문에 명령 시퀀스가 ​​가짜라는 것입니다. 그러나 물론 반드시 그런 것은 아닙니다.

답변3

이전에 bin 디렉토리가 존재하지 않는 한그리고생성이 실패하고 원하는 대로 작업할 수 있는 대화형 bash 쉘이 열립니다. 파일 편집, 할머니에게 이메일 쓰기 등. 이 셸을 종료하면 스크립트가 계속 실행되어 wget, tar 등과 같은 작업을 수행합니다.

이제 이것이 이 스크립트의 실제 내용입니다.하다. 그게 말이 되든 안 되든 판단하고 싶지 않아요…

관련 정보