2012-07-17 72 views
1

我必须按用户运行脚本。该用户的外壳已更改为/etc/passwd文件中的/script/script1。当我运行脚本时,它将SHELL作为/ script/script1。如何在用户运行脚本时忽略用户的shell

+0

为什么不把它从命令行中删除? – 2012-07-17 00:08:14

+1

_医生,医生,当我像这样打到自己的头上时,它会很痛......?因此,它在没有GNU并行的情况下工作。那很好。为什么你需要使用GNU并行?为什么不避免使用它,从而避免了这个问题呢?你看过GNU Parallel的手册页,看看你在运行命令时如何避免(重新)使用用户的登录shell? – 2012-07-17 00:42:12

+0

在手册页上没有提及SHELL。您可能需要向我们展示实际的'sem'调用。另外,为什么要让Oracle运行两个并行备份? – 2012-07-17 00:50:01

回答

2

啊,现在我看到脚本和passwd条目,我想我明白发生了什么。 sem正在尝试使用你的shell来执行你的命令行。如果你在sem之前使用printenv,你会看到SHELL = home/bkup:/ script/script1?

如果是这样,那么就上线运行SEM

如果这不起作用之前导出Shell = /斌/庆典(或/ bin/sh的,等等),请告诉我们printenv输出。

+0

@ user1497667:你真的尝试过我建议的吗?检查和/或更改$ SHELL的定义? – 2012-07-17 03:11:27

+0

@Dhammika:不是特别的,但假设脚本在Solaris中由用户运行时工作正常,然后在脚本中添加'printenv> /tmp/ $ USER.env',将受影响的用户改为/ bin/ksh,以用户运行脚本,然后保存输出,将用户的shell更改为脚本,然后重新运行。比较两个printenv输出并回报 – 2012-08-04 13:24:46