2012-07-17 101 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