web-dev-qa-db-ja.com

この端末の子プロセスの作成中にエラーが発生しました

バージョン10.04以降、Ubuntuを使用していますが、Windowsに比べて使いやすいことがわかりました。現在、「Precise 12.04」を使用しています。私はbashスクリプト用に多くのカスタムランチャーを作成しましたが、昨日まで問題はありませんでした。

複数の実行可能ファイルを含むソフトウェアスイートをインストールしました。メインの実行可能ファイルabaqus\opt\softwaresnameにあり、abq610iの実行可能ファイル/opt/softwaresname/executables/へのシンボリックリンクです。

メインexe abaqusには、いくつかのコマンドライン引数が必要です。引数cae(つまり、abaqus cae)を使用しますが、別のコマンドでグラフィックをより良いモードでレンダリングするため、最終呼び出しはXLIB_SKIP_ARGB_VISUALS=1 abaqus caeです。

.bash_rcファイルにこの長いコマンドのエイリアスを作成しました:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

エイリアスがソフトウェアを実行するため、すべてが完璧に機能しました。怠zyなチャンピオンなので、このためにカイロドックランチャーを作成することを考えました。そこで、「[クリックで起動する]コマンド」ボックスにabaquscaeと入力し、[ターミナルで実行]をオンにしました。しかし、残念なことに、ランチャーをクリックするとエラーが発生しました::

There was an error creating the child process for this terminal
Failed to execute child process "abaquscae" (No such file or directory)

その結果、小さなbashスクリプトファイル「abaquscae.sh」を作成しました。

#!/bin/sh
"XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

保存して、実行可能にし、bashシェルで実行すると、再び同様のエラーが発生しました:

./abaquscae.sh: 2: ./abaquscae.sh: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae: not found 

今私は完全に失われています、私は多くのトリックを試しました.
1- bashスクリプト内のコンマの削除、
2- dos2unixにする、
3-実行可能ファイルへのフルパスを使用
しかし、このスクリプトはbashターミナルを介して実行されていません。

問題:

コマンド(およびそのエイリアス)はbashターミナルで正常に動作しますが、他のチャネル(スクリプト/ランチャーなど)を介して実行されると、ターミナルはそれらを認識できません:( ..

この問題を解決する方法についてアドバイスや情報を持っている専門家がいる場合は、共有してください。とてもありがたいです。

1
Admiral

スクリプトは次のようになります。

#!/bin/bash
XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae

次のコマンドを使用してランチャーを作成することもできます。

bash -c 'XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae'

コマンドラインで実行可能ファイル名の前に環境変数を設定することは、CLI(コマンドラインインターフェイス)シェルの機能です。 VARIABLE=value /path/to/executableランチャーでは、ランチャーを読み取る(および実行可能ファイルを効果的に起動する)プログラムは、「VARIABLE = value」という名前のファイルを見つけようとしますが、もちろん失敗します。

このコマンドは、Ubuntuのデフォルトユーザーシェルであるbashを起動し、実行するよう指示します(-cオプション)文字列「XLIB_SKIP_ARGB_VISUALS = 1/opt/softwaresname/abaqus cae」なので、CLIでそれを入力したときのように解釈されます。

2
Eric Carvalho

私にとっては、#!/bin/bash/ の代わりに #!/bin/bash(余分な/ 最後に)。苦情は非常に似ていましたが、「子プロセスはディレクトリではありません」と述べました。とても助かりました。

0
Andrew