【发布时间】:2018-11-12 19:23:44
【问题描述】:
我有一个由 Autosys 作业调度程序调用的旧版 shell 脚本。在脚本中,他们正在调用一个 jar 文件
res="`$JAVA_HOME/bin/java ....`"
echo >$res<
我收到以下错误。
Error occurred during initialization of VM
java.lang.Error: Properties init: Could not determine current working directory.
所以在shell脚本中我尝试打印当前目录如下所示
echo "PWD:" "$PWD" # Nothing gets printed.
echo "USER:" "$USER" # User id is getting printed
if [ -d "/export/home/abc/" ]; then
echo "Directory present" # gets printed
echo `ls -ltr` # total 3 gets printed
echo `cd /export/abc/def`
echo `pwd` # nothing gets printed
fi
所有类路径都在脚本本身中设置,并且类路径看起来不错。我不明白这里可能是什么问题。
另请注意,此脚本正在由 Autosys 作业调度程序调用的另一个脚本调用。
【问题讨论】:
-
echo
cd /export/abc/def- 这不会改变你脚本的当前目录 -
@Mat: echo
pwd应该打印一些东西。但是没有打印任何东西。有什么原因吗? -
另外,如果我获取调用另一个脚本的脚本,它们会在同一个 shell 中执行,还是我还需要获取内部脚本?
-
@NJMR,如果您使用源代码并且嵌套源代码都将是相同的外壳。如果嵌套脚本作为 bash 脚本运行,那么它将是不同的 shell。此外,如果您使用阻塞命令获取 shell 脚本,那么 shell 脚本将被阻塞,并且只有在阻塞可执行文件完成后才会执行进一步的部分
-
@NJMR 不,它不会删除任何目录。 你确定吗?进程必须在某个目录中启动,并且不可能将当前工作目录更改为不存在的目录。让进程无法确定其当前工作目录的唯一方法是从进程下删除该目录。
标签: java linux shell unix solaris