0

我可以告诉你,这是我很长时间以来见过的最疯狂的事情。

我在 CentOS 5.4 上运行了这个(部分)sh 脚本:

# Check GOLD_DIR`
echo $GOLD_DIR"<--"
#export GOLD_DIR=/share/apps/GOLD_Suite/GOLD <uncommenting this line works!!
if [ "X$GOLD_DIR" =  "X" ] ; then
  echo "ERROR: GOLD_DIR is (probably) not set on host ${HostName}" >> ${3}
  exit 1
fi

这给出了以下输出:

/share/apps/GOLD_Suite/GOLD<-- 
Waiting for 5 seconds ..... Testing output

The test script did spawn a job (i.e. PVM ran OK), 
but errors were detected in the test script output 
on the host machine: Below is the output

ERROR: GOLD_DIR is (probably) not set on host xxx.yyy.local

如您所见,GOLD_DIR变量已设置(脚本找到它,如后缀“ <--”的输出所示)!GOLD_DIR如果我取消注释脚本代码(第一个片段)中变量的导出,一切正常。

编辑:GOLD_DIR/etc/profile(使用export GOLD_DIR=/share/apps/GOLD_Suite/GOLD)中导出

任何想法为什么?

注意 1:我不知道这是否重要,但这是 PVM 上的生成脚本。

注意2:脚本是用sh编写的,#!/bin/sh但我使用的是bash ...

Edit3:我让它工作,但我不知道为什么!- 好的,我所做的就是将主机名(用sudo hostname abc)重命名为我 ssh 进入的机器的名称(例如 abc)。之前 PVM 是列出机器的全名abc.mycompany.local。请注意,两者abc.mycompany.localabc是同一台机器。

4

2 回答 2

0

我认为这可能与工作的非交互性有关。从 shell 脚本运行的作业不一定来自 /etc/profile,因此它们可能不会获取您的 ${GOLD_DIR} 变量。(除非您明确更改了它的行为,否则 bash 只会为登录 shell 获取 /etc/profile。)

尝试添加:

. /etc/profile

在脚本的开头只是为了看看这是否会改变任何东西。如果没有,当您回显错误语句时,在某处添加 ${GOLD_DIR} 以查看该变量在该语句中是否仍然可用。

于 2011-02-09T13:41:15.663 回答
0

所以设置了var。如果您只是做export GOLD_DIR而不是注释行(不设置值),它会起作用吗?

还。是个案吗?它在 CentOS 上有 bash 吗?尝试使用 [[ ]] 来检查哪里出了问题。

于 2011-02-08T11:02:19.790 回答