Eu tenho um jogo baseado em texto, Colossal Cave Adventure, que gostaria de iniciar com um shell script em vez de abrir o terminal e digitar cd ~/Desktop/CCA
e ./Adventure
. O código que estou tentando usar é o seguinte:
#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'
e a mensagem que recebo é esta:
There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)
com opções para alterar as preferências do perfil ou reiniciar o processo. Também tentei usar o caminho absoluto em vez de ~/
, e todos os meus nomes de arquivo estão escritos corretamente e apontam para o lugar certo. O que está errado?
gnome-terminal
Giaphage47
fonte
fonte
cd
não era um comando.cd
certamente é um comando! É o que é conhecido como comando interno do shell , como a resposta de Hastur afirma corretamente. Os comandos internos do shell geralmente são chamados de "shell internos" ou "internos", mas são absolutamente comandos. O quecd
não é é um comando externo . O Ubuntu não temcd
programa (e, se o fizesse, executá-lo ainda não teria o efeito de alterar o diretório no shell a partir do qual você o executou ). @ Giaphage47O erro
Failed to execute child process "cd" (No such file or directory)
surge porque
cd
é um dosSHELL BUILTIN COMMANDS
e não um executável que você encontra fisicamente no seu disco rígido.Para executá-lo ou os outros
built-in
comandos em seu script, você precisa passar toda a linha para umabash
chamadaSe não houver outro comando interno que você precise executar, você poderá definir o diretório de trabalho para o
gnome terminal
, conforme a resposta aqui :Anúncio nauseam : existem algumas alternativas:
Se você está apenas em um terminal, você pode fazer
um
alias
likealias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
e coloque-o em seu
.bashrc
ou em~/.bash_aliases
para que você possa executar com o único comandoStart_My_Game
em cada shell que você for (é mais confortável escolher um nome mais simples / abreviado que Start_My_Game ...)ou um script que você pode tornar executável (
chmod u+x MYscript
) e colocar no seupath
(tipicamente~/bin
é um bom candidato).Suponho que você possa colocar um link na área de trabalho que execute o terminal e modifique o comportamento inicial. Da ajuda do gnome
Selecione Editar Prefer Preferências do perfil ▸ Título e comando.
Marque Executar um comando personalizado em vez do meu shell.
Na caixa de texto, digite o comando ou o shell desejado.
O comando será passado para o terminal exatamente como você o escreve, incluindo quaisquer argumentos que você especificar. As variáveis de ambiente serão herdadas do terminal, pois é um processo filho do terminal.
Abra uma nova guia ou janela do Terminal para ver como o shell ou comando personalizado é executado
fonte
alias
(mais aconchegante) ou um script em seu diretório ~ / bin, sem lançar um novo terminalcd
mas você precisabash
. Dê um cheque :) -