shell 腳本未在終端機上執行

shell 腳本未在終端機上執行

scriptA.sh我在桌面上創建了一個並使其可執行,然後這就是它的內容:

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

我想雙擊它打開終端並運行其中的兩個命令並保持終端打開。但雙擊它並選擇run with terminal選項後實際發生的情況是,終端打開一秒鐘,然後自行關閉。我不知道為什麼會發生這種情況,所以如果有人能告訴我為什麼會發生這種情況以及如何克服它,我將不勝感激。

答案1

gksudo如果您想從桌面啟動它,您可能需要使用它。這將打開一個窗口,詢問您的密碼。

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

另外,為了進行偵錯,您可能希望首先在終端機中執行該腳本。這樣它就不會在列印一些錯誤訊息後立即關閉。


更新

一種方法是建立一個文件,如下所示:

/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 終端接受參數,因此您可以變更各種設定。

使用--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 終端機)選單中,選擇“編輯”>“設定檔設定”>“標題和命令”。在“命令退出時”選項中選擇“保持終端開啟”。

那應該有效。

在此輸入影像描述

相關內容