Oracle窗体调用Solaris shell脚本时没有用户名

Oracle窗体调用Solaris shell脚本时没有用户名,oracle,unix,forms,solaris,shell,Oracle,Unix,Forms,Solaris,Shell,我们的应用程序有两个shell脚本,它们是从运行在多台Solaris 10服务器上的基于web的Oracle Forms 10g调用的。我们最近发现,shell脚本没有在运行表单的OAS用户帐户的完全权限下运行。我在一个脚本中添加了一个echo User is$User命令来显示Solaris用户名,它只显示User is。当我使用id命令时,它确实显示它是以正确的用户身份运行的 那么,关于如何让shell脚本知道它是谁以便它可以读取文件,有什么想法吗 前面提到的管理员已经仔细检查了他们能想到的

我们的应用程序有两个shell脚本,它们是从运行在多台Solaris 10服务器上的基于web的Oracle Forms 10g调用的。我们最近发现,shell脚本没有在运行表单的OAS用户帐户的完全权限下运行。我在一个脚本中添加了一个
echo User is$User
命令来显示Solaris用户名,它只显示
User is
。当我使用
id
命令时,它确实显示它是以正确的用户身份运行的

那么,关于如何让shell脚本知道它是谁以便它可以读取文件,有什么想法吗

前面提到的管理员已经仔细检查了他们能想到的所有东西,并且发誓所有东西都和其他服务器上安装的完全一样。使用表单中的
HOST
命令调用shell脚本

我们使用的是Forms 10g、Solaris 10、Oracle 10.1.0.4.2,Solaris帐户运行的是ksh shell

谢谢, 丹

编辑:删除了关于报表的所有内容,因为问题已经解决,但是如果有人知道为什么通过
HOST
命令从表单调用的shell脚本没有获得完整登录,我仍然感兴趣

更新:这里是传递给
HOST
命令的参数(是的,参数是3行加换行):

我最初尝试调用脚本,就像参数的最后一行一样,但没有取得任何效果,所以我复制了另一个脚本调用正在执行的操作并对其进行了修改。这就是前两行的来源

这是剧本本身。我不得不添加以
PATH=/usr/bin
开头的3行,以执行
.profile
。我想知道的是为什么这是必要的:为什么shell不能自动做到这一点

#!/bin/ksh

PATH=/usr/bin
USERNAME=`id | cut -d'(' -f2 | cut -d')' -f1`
. ~$USERNAME/.profile

TIBCO_HOME=${ORACLE_HOME}/forms/java
JAVA_HOME=/usr/java

CLASSPATH=${CLASSPATH}:${TIBCO_HOME}
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/PVIntegration.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wsdl4j-1.5.1.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/saaj.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/log4j-1.2.8.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/jaxrpc.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-logging-1.0.4.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-discovery-0.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/axis.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/activation.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/mailapi.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/WSProxy.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/xmlsec-1.4.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wss4j-1.5.5.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/Config.properties

export CLASSPATH

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${TIBCO_HOME}
export LD_LIBRARY_PATH

${JAVA_HOME}/bin/java -Xms128m -Xmx256m com.aps.ecm.clients.ECMClient $1 $2 $3 $4

shell可以作为“登录shell”或“非登录shell”调用。听起来Oracle窗体调用的shell是非登录shell(可能是因为shell没有在tty中连接到stdin)。也可以有目的地明确防止.profile(或.cshrc或.bash_profile)之类的东西被来源。用户可以在其.pr文件中放入各种可能会导致脚本执行失败的输出。

shell可以作为“登录shell”或“非登录shell”调用。听起来Oracle窗体调用的shell是非登录shell(可能是因为shell没有在tty中连接到stdin)。也可以有目的地明确防止.profile(或.cshrc或.bash_profile)之类的东西被来源。用户可以在其.pr文件中放入各种输出,这些输出可能会导致脚本执行失败。

我不确定这会对您有什么帮助。但当我遇到这个问题时,我做了很多研究,最终可以将问题追溯到rsh版本,默认情况下是solaris invoke;kerberos版本(/usr/kerberos/bin/rsh)。然后我把它改成了/usr/bin/rsh,它成功了

问候


阿伦

我不知道这么晚了这对你有什么帮助。但当我遇到这个问题时,我做了很多研究,最终可以将问题追溯到rsh版本,默认情况下是solaris invoke;kerberos版本(/usr/kerberos/bin/rsh)。然后我把它改成了/usr/bin/rsh,它成功了

问候


Arun

OAS帐户在所有服务器上是否具有相同的外壳(在
/etc/passwd
中)以及相同的
.profile
$SHELL
是否已设置?(不记得为什么我认为这可能很重要)。是您正在调用的脚本,指定通过
#运行哪个shell/bin/ksh
或类似产品?在脚本中显式调用
.profile
,甚至只是手动设置
USER=$LOGNAME
,会有什么不同吗?在引用文件的路径中是否使用了其他环境变量?查看您传递给主机的参数、脚本本身及其产生的错误可能会有所帮助。shell和
.profile
在所有服务器上都是相同的<代码>$SHELL设置为
/bin/ksh
。脚本确实在顶部指定了shell。手动设置
用户
没有效果,但显式调用
配置文件
确实会产生预期效果。只有
PATH
CLASSPATH
LD\u LIBRARY\u PATH
是未经明确设置而使用的环境变量。我将使用
HOST
命令及其参数和脚本更新问题。OAS帐户在所有服务器上是否具有相同的shell(在
/etc/passwd
中),以及相同的
.profile
$SHELL
是否已设置?(不记得为什么我认为这可能很重要)。是您正在调用的脚本,指定通过
#运行哪个shell/bin/ksh
或类似产品?在脚本中显式调用
.profile
,甚至只是手动设置
USER=$LOGNAME
,会有什么不同吗?在引用文件的路径中是否使用了其他环境变量?查看您传递给主机的参数、脚本本身及其产生的错误可能会有所帮助。shell和
.profile
在所有服务器上都是相同的<代码>$SHELL设置为
/bin/ksh
。脚本确实在顶部指定了shell。手动设置
用户
没有效果,但显式调用
配置文件
确实会产生预期效果。只有
PATH
CLASSPATH
LD\u LIBRARY\u PATH
是未经明确设置而使用的环境变量。我将用
HOST
命令及其参数和脚本更新这个问题。这肯定会解释它。我想您不知道如何让表单调用登录shell?还是我应该继续保持现在的状态,因为它似乎在起作用
#!/bin/ksh

PATH=/usr/bin
USERNAME=`id | cut -d'(' -f2 | cut -d')' -f1`
. ~$USERNAME/.profile

TIBCO_HOME=${ORACLE_HOME}/forms/java
JAVA_HOME=/usr/java

CLASSPATH=${CLASSPATH}:${TIBCO_HOME}
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/PVIntegration.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wsdl4j-1.5.1.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/saaj.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/log4j-1.2.8.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/jaxrpc.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-logging-1.0.4.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/commons-discovery-0.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/axis.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/activation.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/mailapi.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/WSProxy.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/xmlsec-1.4.2.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/wss4j-1.5.5.jar
CLASSPATH=${CLASSPATH}:${TIBCO_HOME}/Config.properties

export CLASSPATH

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${TIBCO_HOME}
export LD_LIBRARY_PATH

${JAVA_HOME}/bin/java -Xms128m -Xmx256m com.aps.ecm.clients.ECMClient $1 $2 $3 $4