我有一个基于文本的游戏,Colossal Cave Adventure,我想使用 shell 脚本启动它,而不是打开终端并输入cd ~/Desktop/CCA
和./Adventure
。我尝试使用的代码如下:
#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
我收到的消息如下:
There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
带有更改配置文件首选项或重新启动进程的选项。我也尝试过使用绝对路径而不是~/
,并且我的所有文件名都拼写正确并指向正确的位置。哪里出了问题?
答案1
cd
是 shell 的内置命令。你应该使用它:
#! /bin/bash
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'
答案2
错误
Failed to execute child process "cd" (No such file or directory)
出现这种情况是因为 cd
它是其中之一SHELL BUILTIN COMMANDS
,而不是您在硬盘上物理找到的可执行文件。
要运行它或脚本中的其他built-in
命令,您需要将所有行传递给bash
调用
gnome-terminal -e '/bin/bash -c "cd ~/Desktop/CCA/; ./Adventure" '
如果没有其他需要执行的内部命令,则可以设置工作目录gnome terminal
,正如刚才回答的那样这里:
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'
令人厌烦:还有一些替代方案:
如果你只是在终端,你可以这样做
类似 并将其放入您的或中,
alias
以便您将能够在每个 shell 中使用单个命令运行(选择一个比 Start_My_Game 更简单/更短的名称更舒适...)
alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
.bashrc
~/.bash_aliases
Start_My_Game
或者您可以制作一个可执行脚本(
chmod u+x MYscript
)并放入您的path
(通常~/bin
是一个很好的候选)。
我想你可以在桌面上放置一个链接来执行终端并修改启动行为。来自 gnome 帮助
选择编辑 ▸ 个人资料首选项 ▸ 标题和命令。
选中运行自定义命令而不是我的 shell。
在文本框中,键入命令或所需的 shell。
命令将完全按照您编写的方式传递给终端,包括您指定的任何参数。环境变量将从终端继承,因为它是终端的子进程。
打开新的终端选项卡或窗口,查看自定义 shell 或命令的执行情况