![내 쉘 스크립트에서 CD가 작동하지 않는 이유는 무엇입니까?](https://rvso.com/image/1312948/%EB%82%B4%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20CD%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
해결됨
Linux Amazon-EC2 서버에서 Minecraft 서버를 시작하는 셸 스크립트를 만들려고 하는데, 서버 실행 파일이 있는 디렉터리로 변경하려고 하면 cd 명령에서 디렉터리나 파일을 찾을 수 없다는 메시지가 나타납니다. 저는 어떤 종류의 쉘 스크립트에 대해서도 경험이 거의 없습니다. 이 파일이 있는 폴더나 파일 자체에 대한 권한이 있어야 합니까? 파일 이름은 "startServer"입니다.
#!/bin/bash
cd /home/ec2-user/Minecraft
java -Xmx2048M -Xms2048M -jar minecraft_server.jar nogui
*파일 확장자로 저장하지 않았습니다. 내가해야합니까? 그럴 필요가 있나요?
답변1
스크립트를 실행 가능하게 만들려면 실행 가능하도록 스크립트에 대한 권한을 수정해야 합니다.
Linux 또는 UNIX에서 권한을 변경하는 명령은 다음과 같습니다.chmod.
chmod +x ./name_of_your_script
현재 사용자에게 스크립트를 실행할 수 있는 권한을 부여합니다.
#! 스크립트 시작 부분은 대화형 쉘에 스크립트가 /bin/bash에 의해 해석된다는 것을 나타내므로 실제로 파일 이름에 확장자를 추가할 필요가 없습니다. 그러나 쉘 스크립트에 .sh를 추가하는 것이 일반적인 규칙입니다.
답변2
오류 메시지가 정확히 무엇인가요? 내 생각엔 다음과 같다.
cd: /Minecraft: No such file or directory
HOME이 정의되지 않고 ~가 빈 문자열로 확장되면 이런 일이 발생합니다.
답변3
스크립트를 실행하려면 실행 권한이 필요합니다. 이를 수행하려면 디렉토리에 대한 CD가 저장되고 다음을 사용하십시오.
chmod u+rwx startServer
나는 이것이 당신의 문제라고 생각하지 않습니다. cd를 사용하는 대신minecraft_server.jar 파일의 전체 경로를 사용해 보십시오:
#!/bin/bash
java -Xmx2048M -Xms2048M -jar /full/path/to/Minecraft/minecraft_server.jar nogui