Скрипт оболочки не запускает команду cd

У меня есть текстовая игра Colossal Cave Adventure, которую я хотел бы запустить с помощью сценария оболочки вместо открытия терминала и ввода 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)

с вариантами изменения настроек профиля или повторного запуска процесса. Я также попытался использовать абсолютный путь вместо ~/, и все мои имена файлов написаны правильно и указывают на правильное место. Что не так?

15
задан 13 November 2017 в 16:18

2 ответа

cd встроенная оболочка. необходимо использовать это:

#! /bin/bash
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'
0
ответ дан 13 November 2017 в 16:18

Ошибка

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

возникает потому что cd один из SHELL BUILTIN COMMANDS и не исполняемый файл, который Вы физически находите на своем Жестком диске.

Выполнять его или другие built-in команды в Вас пишут сценарий, необходимо передать всю строку a bash вызов

 gnome-terminal -e '/bin/bash -c "cd ~/Desktop/CCA/; ./Adventure" '   

Если нет никакой другой внутренней команды, которую необходимо выполнить, можно установить рабочий каталог для gnome terminal, как просто отвечено здесь:

gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'

До тошноты: существуют некоторые альтернативы:

Если Вы находитесь только в терминале, можно или сделать

  • alias как
    alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
    и вставленный в него Ваш .bashrc или в ~/.bash_aliases так, чтобы Вы смогли работать с единственной командой Start_My_Game в каждой оболочке Вы будете (Это более удобно для выбора более простого / краткого названия, чем Start_My_Game...),

  • или сценарий, что можно сделать исполняемый файл (chmod u+x MYscript) и вставленный в Ваш path (обычно ~/bin хороший кандидат).

Я предполагаю, что можно поместить ссылку на рабочий стол, которые выполняют терминал и изменяют стартовое поведение. От справки гнома

  1. Выберите редактирование ▸ предпочтения профиля ▸ заголовок и команда.

  2. Проверьте Выполнение пользовательская команда вместо моей оболочки.

  3. В текстовом поле введите команду или желаемую оболочку.

  4. Команда будет передана терминалу точно, поскольку Вы пишете это, включая любые аргументы, что Вы указываете. Переменные среды будут наследованы от терминала, поскольку это - дочерний процесс терминала.

    Откройте новую вкладку Terminal или окно, чтобы видеть, как пользовательская оболочка или команда выполняются

11
ответ дан 13 November 2017 в 16:18

Другие вопросы по тегам:

Похожие вопросы: