Shell 脚本不会运行 cd 命令

Shell 脚本不会运行 cd 命令

我有一个基于文本的游戏,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_aliasesStart_My_Game

  • 或者您可以制作一个可执行脚本(chmod u+x MYscript)并放入您的path(通常~/bin是一个很好的候选)。

我想你可以在桌面上放置一个链接来执行终端并修改启动行为。来自 gnome 帮助

  1. 选择编辑 ▸ 个人资料首选项 ▸ 标题和命令。

  2. 选中运行自定义命令而不是我的 shell。

  3. 在文本框中,键入命令或所需的 shell。

  4. 命令将完全按照您编写的方式传递给终端,包括您指定的任何参数。环境变量将从终端继承,因为它是终端的子进程。

    打开新的终端选项卡或窗口,查看自定义 shell 或命令的执行情况

相关内容