echo.shという単純なbashスクリプトを作成しました。文字列を出力します。実行可能であることを確認しました。その後、GUIインターフェースを介して「Launch Application」プログラムに追加しました。ところで、コンピュータを再起動しても端末にエコーが表示されず、実行されないようです。
私の理解によると、STDOUTはターミナルファイルなので、スクリプトが実行されたときにターミナルを自動的に開かないでください。ただし、端末から直接スクリプトを実行すると、スクリプトは正常に動作します。
エコファイル
#!/bin/bash
echo "hello this is a bash script talking"
実行可能にする
chmod +x echo.sh
「正しいファイルディレクトリでアプリケーションを起動する」に追加
結果
しかし、システムを再起動すると、スクリプトは期待どおりに実行されず、端末にエコーメッセージが表示されません。理由がわからない。ポイントを完全に逃した可能性があります。もしそうなら教えてください。
参考までに、「Startup Application」プログラムにある「cleanup.sh」スクリプトなど、他のすべてのbashスクリプトも機能します。
修正しよう
STDOUTをターミナルファイル/ dev / ttyにリダイレクトしようとしました。しかし、これはうまくいかないようです。
#!/bin/bash
echo "hello this is a bash script talking" >/dev/tty
また、問題のあるものがechoコマンドであることを確認するために、単純なrmコマンドを使用してbashスクリプトをテストしました。ただし、起動アプリケーションまたは.bashrcファイルに追加すると、スクリプトと同じディレクトリにあるtest.txtは削除されません。ただし、端末で手動で実行すると機能します。
#!/bin/bash
rm ./test.txt
また、Firefoxコマンドを使用してFirefoxを開くだけでアプリケーション自体の実行をテストしました。問題なく動作します。では、アプリ自体の実行には問題がないようですが?
ベストアンサー1
スクリプトは機能できますが、スクリプトのSTDOUT(出力が渡される場所に関係なく)は、次のように起動スクリプトの実行に関連するオペレーティングシステムのプロセスにリンクされています。端末ですが、カーネルプロセスなどではユーザーに隠されます。このメッセージが表示された端末を開くには、おそらく次のように編集する必要があります。
#!/bin/bash
gnome-terminal -e 'echo "hello this is a bash script talking"'
(私は今Ubuntuを使用していないのでこれをテストすることはできませんが、要点はこのメッセージが表示されることを望む端末を明示的に開くことです)