一条命令中切换目录并执行文件

36

执行一个文件时,似乎我总是必须先'cd'进入该文件所在的目录,然后才能执行它,除非出现无法找到数据的错误。如何避免输入两个命令来执行程序?

示例:

cd /usr/local/bin/minecraft/
java -Xms512M -Xmx2048M -jar minecraft.jar

我该如何将其转换为一行代码,以便在Gnome3中创建自定义启动器时可以将其作为我的Exec=_行?

3个回答

88

cd /usr/local/bin/minecraft/ && java -Xms512M -Xmx2048M -jar minecraft.jar 应该可以完成它。


2
+1:这个命令的优点是,如果cd失败了,Java命令甚至不会被执行。 - Atmocreations
我正在使用Python执行相同的操作 os.system("start /B start cmd.exe @cmd /k cd <我的目录路径> && <我的第二个命令>"),但是第二个命令在我的切换目录命令之前执行,因此失败了,有什么解决方法吗?谢谢 - user2176576

13

我再次回答这个问题,并加上一些扩展,以便他人可以从中受益。

cd /usr/local/bin/minecraft/ && java -Xms512M -Xmx2048M -jar minecraft.jar

这个命令肯定会起作用。但在运行此命令后,您将停留在 /usr/local/bin/minecraft/ 目录中。如果您在 bash 脚本 中使用此命令,则所有后续命令都将在此目录中执行。

如果您想在您期望的目录中运行此命令并立即回到之前的位置,请使用括号括起来,即:

(cd /usr/local/bin/minecraft/ && java -Xms512M -Xmx2048M -jar minecraft.jar)

0

或者(例如,如果在其他地方执行)

    sh -c 'cd /usr/local/bin/minecraft; java -Xms512M -Xmx2048M -jar minecraft.jar'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接