0

I can tell you this is the craziest thing I have seen in a long time.

I have this (part of) sh script running on CentOS 5.4:

# 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

And this gives the following output:

/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

As you can see the GOLD_DIR variable is set (the script finds it as shown by the output with postfixed "<--") ! If I uncomment the export of the GOLD_DIR variable in the script code (first snippet) everything works.

EDIT: GOLD_DIR is exported in /etc/profile (using export GOLD_DIR=/share/apps/GOLD_Suite/GOLD)

Any ideas why?

Note1: I don't know if this is important but this is a spawn script on PVM.

Note2: The script is written in sh #!/bin/sh but I am using bash...

Edit3: I GOT IT TO WORK BUT I DONT KNOW WHY! - Ok so what I did was rename the hostname (with sudo hostname abc) to the name of the machine I ssh into (e.g. abc). Before the PVM was listing the full name of the machine abc.mycompany.local. Note that both abc.mycompany.local and abc are the same machine.

4

2 に答える 2

0

それは仕事の非対話的な性質と関係があるのではないかと思います。シェルスクリプトから実行されるジョブは、必ずしも/ etc / profileをソースするわけではないため、${GOLD_DIR}変数を取得しない可能性があります。(動作を明示的に変更していない限り、bashはログインシェルの/ etc / profileのみを取得します。)

追加してみてください:

. /etc/profile

スクリプトの冒頭で、それが何かを変更するかどうかを確認します。そうでない場合は、エラーステートメントをエコーするときに、$ {GOLD_DIR}をどこかに追加して、そのステートメントで変数がまだ使用可能かどうかを確認します。

于 2011-02-09T13:41:15.663 に答える
0

したがって、変数が設定されます。export GOLD_DIRコメント行の代わりに (値を設定せずに) 実行すると、機能しますか?

また。孤立したケースですか?CentOSにはbashがありますか?[[ ]] を使用して、何が問題なのかを確認してみてください。

于 2011-02-08T11:02:19.790 に答える