이 스크립트는 Ubuntu에서는 실행되지만 Debian에서는 실행되지 않는 이유는 무엇입니까?

이 스크립트는 Ubuntu에서는 실행되지만 Debian에서는 실행되지 않는 이유는 무엇입니까?

저는 간단한 Minecraft 서버를 운영하고 있습니다. 나는 얼마 전에 자동으로 Gnu 화면을 생성하고 해당 서버를 시작하는 Ubuntu용 스크립트를 만들었습니다. 나는 데비안을 사용하여 새 서버를 구입하기로 결정했습니다. 이제 어떤 이유로 스크립트가 실행되지 않으며 그 이유를 모르겠습니다!

sleep 5
screen -dmS mc
sleep 1
screen -p 0 -S mc -X stuff "cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks^AgrarianSkiesHQ^3_1_1^AgrarianSkiesHQServer"
sleep 1
screen -p 0 -S mc -X eval "stuff \015"
sleep 1
screen -p 0 -S mc -X stuff ./ServerStart.sh
sleep 1
screen -p 0 -S mc -X eval "stuff \015"

작동 방식:

  1. 최소화된 GNU 화면 시작
  2. 디렉터리를 마인크래프트 서버 디렉터리로 변경하세요.
  3. 서버 시작

기본적으로 작동하지 않는 것은 화면을 생성하고 화면에서 분리한다는 것입니다. 그런데 화면을 복원할 때 아무것도 입력하려면 Ctrl+c를 눌러야 합니다. "cd" 명령은 전송되지 않으며 ./StartServer.sh도 전송되지 않습니다.

CD 줄에 "^"가 있어야 합니다. 터미널에서 명령을 테스트했는데 원하는 대로 작동합니다.

답변1

^제어 문자 시퀀스가 ​​도입되었기 때문에 스크립트가 작동하지 않습니다 . 이 두 문자는 + 문자 ^A로 채워져 있으며 , bash는 이를 줄의 시작 부분으로 이동하는 명령으로 해석합니다. 대신에 그것을 사용해야합니다 .CtrlA\^

screen -p 0 -S mc -X stuff 'cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks\^AgrarianSkiesHQ\^3_1_1\^AgrarianSkiesHQServer^M'
screen -p 0 -S mc -X stuff './ServerStart.sh^M'

화면 변경 로그에서 이 동작이 변경되었음을 나타내는 기록을 찾을 수 없지만 스크립트가 이전 시스템에서 실행되고 있다면 변경되었을 것입니다.

관련 정보