为什么 cd 在我的 shell 脚本中不起作用?

为什么 cd 在我的 shell 脚本中不起作用?

解决了

我正在尝试在我的 Linux Amazon-EC2 服务器上创建一个 shell 脚本来启动我的 Minecraft 服务器,但是当我尝试切换到服务器可执行文件所在的目录时,cd 命令说找不到目录或文件。请注意,我几乎没有使用过任何类型的 shell 脚本。它是否必须具有此文件所在文件夹或文件本身的权限?该文件名为“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

将授予当前用户执行脚本的权限。

脚本开头的 #! 向交互式 shell 表明该脚本将由 /bin/bash 解释,因此您实际上不需要在文件名中添加扩展名。但是,在 shell 脚本后面附加 .sh 是一种常见的惯例。

答案2

错误信息到底是什么?我的猜测是:

cd: /Minecraft: No such file or directory

如果 HOME 未定义,就会发生这种情况,并且 ~ 扩展为空字符串。

答案3

该脚本需要执行权限才能运行;为此,请 cd 到存储目录并使用:

chmod u+rwx startServer 

但我不认为这是你的问题。尝试使用 minecraft_server.jar 文件的完整路径,而不是使用 cd:

#!/bin/bash
java -Xmx2048M -Xms2048M -jar /full/path/to/Minecraft/minecraft_server.jar nogui

相关内容