[편집 - 시간을 절약해 줍니다. 상황을 더 잘 표현해이 항목]
Ubuntu Mate에서는 작동하지만 Lubuntu Minimal(+LXDE)에서는 작동하지 않는 shebang 스크립트가 있습니다.
검색을 통해 필요한 것을 얻을 수 없어서 지금은 헤매고 있습니다.
내 첫 번째 스크립트는 Ubuntu Mate(xenial) 호스트에서 작성되었으며 매우 쉽게 실행되었습니다. 이 버전은 이 글의 마지막 부분에 있습니다.
동일한 스크립트를 내 VM Lubuntu Minimal 머신(수동으로 재작성 - 공유되지 않음)으로 가져왔고 문제가 발생했습니다.
Lubuntu Minimal에서는 다양한 포럼에서 수집한 다음 shebangs를 시도했습니다.
#!/bin/bash
호스트에서 잘 작동합니다
#!/bin/sh
#!/usr/bin/env bash
출력(주로):
bash: /home/user/bin/script1: [the path part of the shebang, e.g./bin/bash/]: bad interpreter: not a directory
컴퓨터를 한두 번 재부팅하고 chmod +x
" chmod 700
ls -l"을 확인하면 Ubuntu Mate의 작업 버전과 동일한 권한이 표시됩니다.
스크립트 이름을 지정하는 script1.sh
것뿐만 아니라 이름도 지정 하려고 시도 script1
했지만 결과가 없습니다. (이 합계의 역할이나 프로세스가 무엇인지 모르겠습니다 )./.script1
/.script1.sh
/.
sh
스크립트 파일을 다음 위치에 배치했습니다.
/usr/local/bin
(기억에서 만들어야 할 것 같아요)
~/Desktop
그냥 가서 봐
~/bin
(진짜 이걸 만들어야 했어)
일부 포럼에서 $PATH
재부팅에 대한 이야기가 있어서 몇 번 재부팅했습니다(하지만 이해가 되지 않았습니다 $PATH
).
이것오직(부분) shebang을 제거하고 스크립트를 ~/bin
.
두 가지 질문:
왜 그런지 이해가 안 돼요. Ubuntu Mate가 소유한 Lubuntu Minimal에는 어떤 주요 기능이 빠져 있습니까? "/bin/bash" 디렉토리를 생성하면 bash가 마술처럼 해당 경로를 찾아서 아무 작업도 수행하지 않습니까, 아니면 손상시키게 됩니까?
결국 런처에서 실행하고 싶지만
.desktop
초기 실험은 실패했습니다.Exec=script1
데스크톱 항목에서 사용하면 터미널 창이 즉시 깜박인 다음 닫힙니다. 이전에 Lubuntu에서 사용한 적이 있지만bash -c "cmd1 && cmd2 &&..."
bash는 여기서 오류를 발생시킵니다. 직관적으로 이것은 Shebang에서 "bash"를 제거했기 때문이라고 생각합니다. 그러나 위의 질문 1을 참조하십시오.
지금 내 마음은 너무 혼란스러워서 이것을 이해하기 위해 어디서부터 읽어야 할지 모르겠습니다. 당신의 지혜는 높이 평가될 것입니다.
미리 감사드립니다
원본 테스트 스크립트(Ubuntu Mate용):
#!/bin/bash
#host to block
echo -e "enter domain to block:"
read host_name
host_entry="127.0.1.1\t$host_name"
echo -e $host_entry >>/home/user/Desktop/host-edits-test
echo "***done and gone***"
sleep 2
exit 0
답변1
의견에서 이미 지적했듯이 동시에 여러 가지 문제에 직면한 것 같습니다.
- 올바른 shebang 구문은 이지만
#!
이는 스크립트가 아닌 귀하의 질문에 오타가 있는 것 같습니다. - 마지막 슬래시는 디렉터리를 의미하므로 메시지가 표시됩니다.
잘못된 통역사: 디렉토리가 아닙니다.
- Ubuntu의 모든 변형은 기본 셸을 사용하므로 수동으로 설치
dash
해야 할 수도 있습니다 .bash
bash
귀하의 "원본 테스트 스크립트"는 지금까지 올바른 것으로 보입니다. 설치되었는지 확인하면 문제가 없을 것입니다.
또는 스크립트에서 bashism을 사용하지 않는 경우 /bin/sh
일반적으로 현재 시스템 쉘을 가리키는 링크로 shebang을 변경하십시오. 이 경우 dash
이것이 가장 이식 가능한 솔루션입니다.
https://askubuntu.com/questions/141928/what-is-difference- Between-bin-sh-and-bin-bash
편집하다
여러 문제를 병렬로 해결하려고 시도하고 질문 내에서 여러 문제를 혼동하는 것 같습니다. 그래서 질문이 차례로 나왔습니다.
- 패키지가 설치되어 있는지 확인하십시오
bash
. /bin/bash
실제로 실행 가능한 바이너리인지 확인하세요 ./bin/bash
사용자로 호출하여 유효한 명령줄을 얻을 수 있는지 확인하세요 .- 몇 가지만으로 Shebang을 실행할 수 있는지 확인하십시오
echo
.
지금까지 모든 것이 제대로 작동했다면 시스템 설정이나 바이너리가 아닌 실제 스크립트에 문제가 있을 가능성이 높습니다 bash
. 문제가 발생하면 질문을 업데이트하세요.정확한 설명출력하고 지금은 나머지를 건너뜁니다. 아니면 더 나은 방법은새 질문 만들기, 이미 혼란스럽기 때문입니다.