起動時にbashスクリプトが実行されない

起動時にbashスクリプトが実行されない

echo.shという単純なbashスクリプトを作成しました。文字列を出力します。実行可能であることを確認しました。その後、GUIインターフェースを介して「Launch Application」プログラムに追加しました。ところで、コンピュータを再起動しても端末にエコーが表示されず、実行されないようです。

私の理解によると、STDOUTはターミナルファイルなので、スクリプトが実行されたときにターミナルを自動的に開かないでください。ただし、端末から直接スクリプトを実行すると、スクリプトは正常に動作します。

エコファイル

#!/bin/bash

echo "hello this is a bash script talking"

実行可能にする

chmod +x echo.sh

「正しいファイルディレクトリでアプリケーションを起動する」に追加 /home/sam/Documents/bash/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を使用していないのでこれをテストすることはできませんが、要点はこのメッセージが表示されることを望む端末を明示的に開くことです)

おすすめ記事