我正在运行一个script.sh
应该打开终端的外壳,然后在此打开的终端中运行一些命令。发生的情况是终端启动,但是在该终端中未执行以下命令。如果有人可以告诉我,通过此方法打开终端后如何在其中script.sh
运行其他命令。这是我的script.sh
文件:
#!/bin/bash
gksu -u userA /usr/bin/gnome-terminal PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts
因此,第一个命令gksu -u userA /usr/bin/gnome-terminal
打开一个终端实例,我问如何运行以下两个命令,PACKAGE_PATH=/home/userA/package1
并cd /home/userA/scripts
在此打开的终端实例中使用script.sh
编辑:
在应用了muru的建议之后,这就是我使用的方法:gnome-terminal -x sudo -u userA bash -c 'PPACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; cd /home/userA/scripts; source varset.sh; bash'
但是它的运行顺序与我所说的顺序不同。
出现在终端的第一行是在variables.sh中找到的一条消息(尽管这应该是要运行的第三条命令),另一件事是没有设置应使用此变量设置的变量,varset.sh
例如,当我使用echo $ var1(在variables.sh中找到)不显示任何内容,这意味着未设置变量,唯一在variables.sh中起作用的是显示的echo消息。
目录中出现的第二行是终端工作目录,该目录设置为/home/userA/scripts
。
第三件事是PACKAGE_PATH=PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH
设置$ PACKAGE_PATH变量的此命令不起作用。
因此,如果有人可以建议如何按此顺序运行该命令,以及如何在第一个命令和varset.sh
shell文件中设置变量。
我建议使用以下方法来保持外壳打开:
gnome-terminal -x sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
cd /home/userA/scripts; \
source varset.sh; \
bash'
但是,如果不导出,则最后一个bash
不会受到分配$PACKAGE_PATH
或来自source varset.sh
它们的分配的影响。
所以:
gnome-terminal -x sudo -u userA bash -c 'export PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
cd /home/userA/scripts; \
source varset.sh; \
bash'
与varset.sh
出口应该做的trick俩。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句