У меня есть текстовая игра 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)
с возможностью изменить настройки профиля или перезапустить процесс. Я также попытался использовать абсолютный путь вместо ~/
, и все мои имена файлов написаны правильно и указывают на правильное место. Что случилось?
gnome-terminal
Giaphage47
источник
источник
cd
это не команда.cd
конечно , это команда! Это то, что известно как встроенная команда оболочки , как правильно говорит ответ Хастура . Встроенные команды оболочки часто называются «встроенными командами оболочки» или «встроенными» для краткости, но они абсолютно команды. Чтоcd
не является внешней командой . У Ubuntu нетcd
программы (и если она будет запущена, она все равно не приведет к изменению каталога в оболочке, из которой вы ее запустили ). @ Giaphage47Ошибка
Failed to execute child process "cd" (No such file or directory)
возникает потому, что
cd
это один изSHELL BUILTIN COMMANDS
исполняемых файлов, а не исполняемый файл, который вы физически найдете на жестком диске.Чтобы запустить его или другие
built-in
команды в вашем скрипте, вам нужно передать всю строку наbash
вызовЕсли нет другой внутренней команды, которую вы должны выполнить, вы можете установить рабочий каталог для
gnome terminal
, как только что ответил здесь :До тошноты : есть несколько альтернатив:
Если вы просто в терминале, вы можете сделать
alias
какalias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
и положить его в
.bashrc
или~/.bash_aliases
так , что вы будете иметь возможность работать с одной командойStart_My_Game
в каждой оболочке вы будете (Это уютнее выбрать простой / короткое имя , чем Start_My_Game ...)или скрипт, который вы можете сделать выполняемым (
chmod u+x MYscript
) и вставить в негоpath
(как правило~/bin
, это хороший кандидат).Я полагаю, вы можете разместить на своем рабочем столе ссылку, которая запускает терминал и изменяет поведение при запуске. От помощи гнома
Выберите «Правка» ▸ «Настройки профиля» ▸ «Заголовок и команда».
Установите флажок Выполнить пользовательскую команду вместо моей оболочки.
В текстовом поле введите команду или желаемую оболочку.
Команда будет передана в терминал точно в том виде, в котором вы ее написали, включая все заданные вами аргументы. Переменные среды будут унаследованы от терминала, поскольку это дочерний процесс терминала.
Откройте новую вкладку или окно терминала, чтобы увидеть, как выполняется пользовательская оболочка или команда
источник
alias
(более удобного) или скрипта в вашем каталоге ~ / bin, без запуска нового терминалаcd
но вам нужно передать егоbash
. Дайте ему чек :) -