シェルスクリプトがターミナル上で実行されない

シェルスクリプトがターミナル上で実行されない

scriptA.shデスクトップに を作成し、実行可能にすると、その内容は次のようになります。

#!/bin/bash
sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

これをダブルクリックしてターミナルを開き、その中で 2 つのコマンドを実行してターミナルを開いたままにしたいのですが、ダブルクリックしてrun with terminalオプションを選択すると、ターミナルが 1 秒間開いてから閉じてしまいます。なぜこのようなことが起こるのかわかりませんので、なぜこのようなことが起こるのか、またどのように解決すればよいのかを教えていただけると幸いです。

答え1

gksudoデスクトップから起動したい場合は、を使用することをお勧めします。パスワードを求めるウィンドウが開きます。

#!/bin/bash
gksudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

また、デバッグするには、まずターミナルでそのスクリプトを実行する必要があります。そうすれば、エラー メッセージを出力した直後にスクリプトが閉じることはありません。


アップデート

これを行う 1 つの方法は、次のようにファイルを作成することです。

/home/user_name/.gnome2/panel2.d/default/launchers/script_name.desktop

次に、次のような内容を入力します。

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=gdu-category-peripheral
Name[en_US]=Receiving fax
Exec=gksu /usr/bin/gnome-terminal
Comment[en_US]=Some description...
Name=My Script
Comment=Start my script
Icon=gnome-panel-launcher

一般的に、これは私にとってはうまく機能します。gnome-terminal はパラメータを受け入れるため、さまざまな設定を変更できます。

--working-directory=...コマンドの代わりにを使用しますcd ...。特定の変数を取得するには、おそらく--profile=...オプションを使用することをお勧めします。

Exec=gksu -u userA /usr/bin/gnome-terminal --profile=/home/userA/profile --working-directory=/home/userA/scripts

次に、変数のプロファイル スクリプトを作成します。

# In /home/userA/profile
PACKAGE_PATH=/home/userA/package1

もちろん、プロファイル スクリプトに他のエイリアスや必要なものを追加することもできます。

答え2

デフォルトでは、「ターミナルウィンドウで実行する」オプションを選択すると、(gnome-)ターミナルウィンドウは終了すると閉じます。する一瞬開くとおっしゃっているので、開けるようにしてください。滞在するターミナルプロファイルの設定を変更して開きます。

(gnome-terminal) メニューから、「編集」>「プロファイル設定」>「タイトルとコマンド」を選択します。「コマンドの終了時」オプションで、「ターミナルを開いたままにする」を選択します。

それはうまくいくはずです。

ここに画像の説明を入力してください

関連情報