Shell 脚本不会运行 cd 命令

Gia*_*e47 17 gnome-terminal

我有一个基于文本的游戏 Colossal Cave Adventure,我想用 shell 脚本启动它,而不是打开终端并输入cd ~/Desktop/CCA./Adventure。我试图使用的代码是这样的:

#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
Run Code Online (Sandbox Code Playgroud)

我收到的消息是这样的:

There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

具有更改配置文件首选项或重新启动流程的选项。我还尝试使用绝对路径而不是~/,并且我的所有文件名都拼写正确并指向正确的位置。怎么了?

Tah*_*idi 18

cd 是一个内置的shell。你应该使用这个:

#! /bin/bash
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'
Run Code Online (Sandbox Code Playgroud)


Has*_*tur 12

错误

Failed to execute child process "cd" (No such file or directory)

出现是因为它 cdSHELL BUILTIN COMMANDS您在硬盘上实际找到的可执行文件之一,而不是可执行文件。

要运行它或built-in脚本中的其他命令,您需要将所有行传递给bash调用

 gnome-terminal -e '/bin/bash -c "cd ~/Desktop/CCA/; ./Adventure" '   
Run Code Online (Sandbox Code Playgroud)

如果没有其他必须执行的内部命令,则可以为 设置工作目录gnome terminal,正如刚刚在此处回答的那样:

gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'
Run Code Online (Sandbox Code Playgroud)

令人作呕:有一些选择:

如果您只是在终端中,您可以这样做

  • 一个alias喜欢
    alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
    并将它放在您的.bashrc或中,~/.bash_aliases这样您就可以Start_My_Game在每个 shell 中使用单个命令运行(选择更简单/短名称比 Start_My_Game 更舒适...)

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

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

  1. 选择编辑?个人资料偏好?标题和命令。

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

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

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

    打开新的终端选项卡或窗口以查看自定义 shell 或命令的执行方式