Сценарий оболочки не будет запускать команду 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)

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

1
задан 13 November 2017 в 17:18

1 ответ

Ошибка

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'

Ad nauseam: есть несколько альтернатив: [!d7 ]

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

a alias, например alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure ", и поместить его в свой .bashrc или ~/.bash_aliases, чтобы вы могли запускайте с помощью одной команды Start_My_Game в каждой оболочке, которой вы будете (удобнее выбрать более простое / короткое имя, чем Start_My_Game ...) или скрипт, который вы можете сделать исполняемым файлом (chmod u+x MYscript), и поместите в свой (типично ~/bin является хорошим кандидатом).

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

Выбрать Изменить ▸ Настройки профиля ▸ Название и команда. Проверьте Запуск пользовательской команды вместо моей оболочки. В текстовом поле введите команду или требуемую оболочку. Команда будет передана на терминал точно так же, как вы ее пишете, включая любые аргументы, которые вы указали. Переменные среды будут наследоваться от терминала, поскольку это дочерний процесс терминала. Откройте новую вкладку или окно терминала, чтобы узнать, как выполняется пользовательская оболочка или команда
10
ответ дан 24 May 2018 в 07:15
  • 1
    Но дело было в запуске из сценария оболочки, и не нужно открывать окно терминала. – Giaphage47 28 May 2014 в 11:16
  • 2
    Если вы хотите запустить из скрипта достаточно alias (более уютный) или скрипт в вашем каталоге ~ / bin, без запуска нового терминала – Hastur 28 May 2014 в 11:19
  • 3
    Ответ обновляется на случай, если вам понадобится еще раз: можно передать cd, но вам нужно передать его на bash. Дайте ему чек :) - – Hastur 28 May 2014 в 12:45

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

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