シェルスクリプトはcdコマンドを実行しません


15

私は、私が代わりに端末とタイピング開くのシェルスクリプトを起動したいと、テキストベースのゲーム、巨大洞窟アドベンチャーを持っている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)

プロファイルの設定を変更したり、プロセスを再起動したりするオプションがあります。また~/、の代わりに絶対パスを使用してみましたが、すべてのファイル名のスペルが正しく、正しい場所を指し示しています。なにが問題ですか?

回答:


16

cd シェル組み込みです。これを使用する必要があります:

#! /bin/bash
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'

ありがとう、私はそれcdが命令ではないことに気づかなかった。
Giaphage47

1
cd確かにあるコマンド!それはとして知られているものだシェル組み込みコマンドとして、ハスターの答えは正しく述べています。シェル組み込みコマンドは、多くの場合「シェル組み込み」または「組み込み」と呼ばれますが、完全にコマンドです。何cdでないことはある外部コマンド。Ubuntuにはcd プログラムがありません(実行した場合でも、実行しても、実行元のシェルのディレクトリを変更する効果はありません)。@ Giaphage47
エリアケイガン

11

エラー

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

生じる cdSHELL BUILTIN COMMANDSハードディスク上で物理的に見つけられる実行可能ファイルの1つであり、ではないです。

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'

吐き気:いくつかの選択肢があります:

ターミナルにいる場合は、次のいずれかを実行できます

  • alias以下のように
    alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
    、あなたにそれを置く.bashrcかで~/.bash_aliasesあなたは、単一のコマンドで実行することができますようにStart_My_Game各シェルにあなたが(それはStart_My_Gameよりもシンプル/短い名前を選択することが、より居心地の良いです...)になります

  • または、実行可能ファイル(chmod u+x MYscript)を作成してpath(通常は~/binは適切な候補です)。

ターミナルを実行し、開始動作を変更するリンクをデスクトップに配置できると思います。gnomeヘルプから

  1. [編集]▸[プロファイル設定]▸[タイトルとコマンド]を選択します。

  2. [シェルの代わりにカスタムコマンドを実行する]をオンにします。

  3. テキストボックスに、コマンドまたは目的のシェルを入力します。

  4. コマンドは、指定した引数を含め、記述したとおりにターミナルに渡されます。環境変数は、端末の子プロセスであるため、端末から継承されます。

    新しいターミナルタブまたはウィンドウを開いて、カスタムシェルまたはコマンドの実行方法を確認します


しかし、ポイントはシェルスクリプトから起動することであり、ターミナルウィンドウを開く必要はありませんでした。
Giaphage47

スクリプトから起動したい場合は、十分なANがあるalias新しいターミナルを起動しなくて、(もっと居心地のよい)、またはあなたの〜/ binのディレクトリにあるスクリプト
ハスター

回答が必要な場合に備えて更新されましcdbash。合格することは可能ですが、に渡す必要があります。確認してください:) –
ハスター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.