이 질문은 다음과 유사합니다. https://serverfault.com/questions/342697/prevent-sudo-apt-get-etc-from-swallowing-pasted-input-to-stdin하지만 대답은 만족스럽지 않습니다. (bash 스크립트의 각 행에 &&
을 추가하는 것은 우아하지 않습니다). 일부 사용자가 붙여 넣기/실행할 수있는 이유를 설명하지 않습니다. 여러 개의 후속 apt-get install -y
명령과 다른 명령은 stdout이 다음 명령에 의해 부 풀리기 때문에 실패 할 수 있습니다.Bash 스크립트가 실행되는 대신 인쇄됩니다.
sudo apt-get install -y graphicsmagick
sudo apt-get install -y libgraphicsmagick++1-dev
...
그것은 두 선 또는 sudo apt-get install
물건을 더 많이 가질 수 있습니다
나는 스크립트 my_script.sh
있습니다. 라이브러리 (graphicsmagick 등)는 중요하지 않으며 모든 라이브러리가 될 수 있습니다.
나는이 스크립트를 복사하고이 내용을 비난하거나이처럼 실행의 붙여 넣을 때 :
cat my_script.sh | sudo -i bash
다음 몇 가지 이유로 첫 번째 라인 (graphicsmagick) 실행 얻고 나머지 단지에 인쇄를위한 콘솔. sudo apt-get install -y
으로 만 발생하며이 명령을 포함하지 않는 다른 스크립트는 정상적으로 작동합니다.
cat my_script.sh | sudo -i sh
당신이 이런 일이 발생하는 이유를 설명 할 수 : 나는 bash
sh
에 (dash
이됩니다) 내가 기대 얻을 동작을 변경하는 경우
?
- 가 왜 이런 식으로 일을 :
이 질문/의견을 피해주십시오 수, 응답 할 때? 배시에
- 배관
- 일부 다른 측면 난 그냥 내가 기대하고
sh
이처럼
bash
가 작동하지 않는 이유를 알고 싶어
안전하거나 hackish없는 안전하지 않습니다.
추신.
[email protected]:/tmp$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
'sh'가'dash'라고 어떻게 알 수 있습니까? 'ls -l/bin/sh'가 알려줄 것입니다. 어떤 OS를 사용하고 있습니까? –
@KeithThompson - 예, 대시입니다, 우분투 14.04, quiestion이 편집되었습니다. – mnowotka
아마도 당신의 문제와 관련이 없지만, 당신의 스크립트와'bash' 또는'sh'를 호출 할 때'sudo'를 사용할 필요는 없습니다. –