【发布时间】:2016-07-01 20:02:42
【问题描述】:
想要从任何单个脚本执行以下命令。如何做到这一点?
每当我开始我的 putty 会话时,在我的 unix 机器上,bash shell 即将到来,然后我需要输入以下命令来设置我的工作区。
下面是我正在做的确切过程。
-bash-4.2$ bash
[userName@SystemName ~]$ su
getting admin rights
[root@SystemName userName]#
setting up environment variable for python project
[root@SystemName userName]# source xxxx.env
setting the path for my local workspace
[root@SystemName userName]# setxxxx /home/userName/SourceCode/
现在,我希望从单个脚本中执行所有这些命令。 因此,我将所有这些命令放入一个 shell 脚本并尝试执行,但只执行了第一条指令。 为什么?
start.sh
#!/bin/bash
bash
su
source ssdt.env
setssdt /home/userName/projectName/
【问题讨论】:
-
因为 su 创建了新的 shell,尝试将脚本的第一行更改为
#!/bin/su -c /bin/bash并从脚本正文中删除su -
你为什么不直接运行
su -c 'source ssdt.env && setssdt /home/adubey/Test_Tip/'? -
如果您必须将
su封装在脚本中而不是从外部调用它,请考虑在每个命令前加上sudo前缀。而且,正如其他人所说,从脚本中删除bash和su,因为它们都会调用一个新的 shell。 -
@paddy
sudo在每一行都会有相同的“新会话”问题。 -
我会在脚本开头添加这个
[ $UID != 0 ] && exec sudo "$0" "$@"
标签: linux bash python-2.7 python-3.x unix