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-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) 菜单中选择“编辑”>“配置文件设置”>“标题和命令”。在“当命令退出时”选项中选择“保持终端打开”。

那应该可行。

在此处输入图片描述

相关内容