我是shell脚本的新手。我编写了一个脚本来检查是否设置了ORACLE_HOME和ORACLE_SID。在这里我调用了其他脚本来设置env变量。
while [ 1 -gt 0 ]
do
echo -e "Please enter path of oracle home directory:\c"
read DB_HOME
if [ -d $DB_HOME ]
then
./oracle_env.sh $DB_HOME "test1"
echo "ORACLE_HOME has been set successfully!"
status="Y"
break
else
echo "Path or directory does not exist."
fi
done
#This script will set ORACLE_HOME and SID
export ORACLE_HOME=$1
export ORACLE_SID=$2
当我以
运行第二个脚本时./oracle_env.sh /u01/app/oracle test
它工作正常。我的意思是,当我跑步时
echo $ORACLE_HOME
它给出了像
这样的路径/u01/app/oracle
现在问题是当我从第一个脚本运行相同的脚本时,它无法正常工作。
请帮帮我!!!
答案 0 :(得分:4)
问题很简单:
如果您执行脚本,它将在新shell中启动,在那里设置环境并关闭shell。结果,第一个调用shell没有任何变化。
所以你必须使用source <shellscript>
有关详细信息,请参阅man bash
我不知道你使用的是哪个shell。也许解决方案对于其他炮弹来说有点不同。
答案 1 :(得分:0)
尝试在终端中设置环境变量:(下面的代码是针对xampp而不是oracle,路径会根据你的要求而变化)
export PATH=/opt/lamp/bin:$PATH
您可以通过以下方式查看环境变量:
echo $PATH
看,这是否适合你。
答案 2 :(得分:0)
使用source(或)运行脚本。命令。
while [ 1 -gt 0 ]
do
echo -e "Please enter path of oracle home directory:\c"
read DB_HOME
if [ -d $DB_HOME ]
then
. oracle_env.sh $DB_HOME "test1" ## Here you run the script with . command.
echo "ORACLE_HOME has been set successfully!"
status="Y"
break
else
echo "Path or directory does not exist."
fi
done
使用.
命令运行您的第一个脚本。
$ . script.sh