我在一个solaris盒子上运行一个脚本.特别是SunOS 5.7.我不是根我正在尝试执行类似于以下的脚本:
newgrp thegroup <<
FOO
source .login_stuff
echo “hello world”
FOO脚本运行.问题是它返回到调用进程,这将使我进入旧的源代码.login_stuff来源.我明白这个行为.我正在寻找的是一种留在子shell中的方法.现在我知道我可以把xterm& (见下文),这样做,但是有一个新的xterm是不合需要的.
Passing your current pid as a parameter.
newgrp thegroup <<
FOO
source .login_stuff
xterm&
echo $1
kill -9 $1
FOO我没有sg可用.
另外,newgrp是必要的.
以下作品很好;将以下位置放在(Bourne或
Bash)脚本的顶部:
### first become another group group=admin if [ $(id -gn) != $group ]; then exec sg $group "$0 $*" fi ### now continue with rest of the script
这在Linuxen上工作正常.一个警告:包含空格的参数分开.我建议你使用env arg1 =’value 1’arg2 =’value 2’script.sh构造来传递它们(由于某种原因我无法使用$@)