使用chmod+;后获取权限被拒绝;在Linux上执行Java程序时使用x
这是我的可执行文件:使用chmod+;后获取权限被拒绝;在Linux上执行Java程序时使用x,java,linux,permissions,chmod,Java,Linux,Permissions,Chmod,这是我的可执行文件: #!/bin/bash JAVA_HOME=/cad2/ece419s/java/jdk1.6.0/ # arguments to GameServer # $1 = port # where GameServer is listening ${JAVA_HOME}bin/java GameServer $1 我以以下方式运行chmod命令: chmod +x server.sh 然后: ./ server.sh 8000 800
#!/bin/bash
JAVA_HOME=/cad2/ece419s/java/jdk1.6.0/
# arguments to GameServer
# $1 = port # where GameServer is listening
${JAVA_HOME}bin/java GameServer $1
我以以下方式运行chmod
命令:
chmod +x server.sh
然后:
./ server.sh 8000
8000是我的服务器正在侦听的本地计算机的端口
在
bash-x server.sh 8000
之后,我得到了它看起来在/
和server.sh
之间有一个空格,所以您试图执行/
您可以运行命令“ls-l”,方法是进入上一个目录并检查权限是否应用于该文件
如果没有,则检查用户是否具有更改权限。否则,您可以使用基本上拥有所有权限的“root”用户
看起来您在其他平台(可能是Windows)上编写了这个
server.sh
脚本,并将其复制到Linux系统,而这两个系统在行尾使用不同的字符,因此请尝试首先通过dos2unix server.sh
将其转换为Linux格式
如果您的系统没有
dos2unix
,您可以通过
yum上安装dos2unix
apt上安装dos2unix
dos2unix
,另一个选项是使用vim
(在普通的Linux机器上应该是可变的):
vim server.sh
:set ff=unix
:w
确切的错误消息是什么?Command not found error after./server.sh 8000从这里我可以建议的最好方法是确保(1)chmod实际工作:尝试
ls-l server.sh
(2)您与server.sh位于同一目录中,(3)实际存在/bin/bash
,(4)您可以通过bash-xserver.sh8000
在不使用shebang的情况下运行脚本。在使用bash-xserver.sh8000之后,我遇到了另一个错误JAVA_HOME=$'/cad2/ece419s/JAVA/jdk1.6.0/\r'+$'/cad2/ece419s/JAVA/jdk1.6.0/\rbin/JAVA'GameServer$'8000\r'bin/JAVA:没有这样的文件或目录va/jdk1.6.0/对不起,引号、\r
字符和短语“没有这样的文件或目录va/jdk1.6.0”在我看来都是错的。噢不知道,我只是在没有空间的情况下尝试,但由于某些原因,我在当前目录中找不到命令server.sh?脚本是否运行,或者在尝试运行server.sh时是否得到“command not found”?如果在当前目录中找不到server.sh,那就奇怪了。可能脚本正在运行,但其中有错误?在这种情况下,您可以阅读并尝试,bash-x
。当尝试运行server.sh时,它不会运行i get命令not found error。您的意思是将命令写为bash-x./server.sh8000吗?是的。可能是chmod
不起作用。试试ls-l
。我想我不允许“root”用户,因为我使用的是大学机器。我得到的所有文件都是在Linux上编写的。但在任何情况下,我都尝试了dos2unix server.sh,得到了dos2unix:not命令found@user1722022然后您需要首先安装dos2unix
,请查看我的更新答案。我没有root权限,因为我使用的是大学实验室工作站机器,不允许我这样做those@user1722022如果已安装vim
,您可以使用它进行转换。请看我的最新答案。