【发布时间】:2012-04-24 18:36:52
【问题描述】:
我开发了一些在 Solaris 上运行的 KornShell (ksh) 脚本。我通过 Putty 运行脚本。在一台服务器上,我可以按如下方式运行它们:
$ script.ksh
另一方面,服务器,我需要按如下方式运行它们:
$ ./script.ksh
否则我会收到 script.ksh not found 错误。什么会导致这种差异?我从该脚本中调用脚本,并且不想更改所有脚本以将“./”附加到每个脚本调用以使脚本正常工作。
两台服务器 uname -a 报告如下:
$ uname -a = SunOS servername 5.10 Generic_147440-10 sun4u sparc SUNW,Sun-Fire-V245
$ echo $SHELL = /bin/ksh
【问题讨论】:
-
检查两台机器上 $PATH 变量的差异,你就会发现。
-
比较两个路径后,看起来有效的路径中有/opt/OV/bin,而另一个没有。我相信这是 HP Open View bin,所以不确定是否/为什么会影响运行单独的脚本。
-
不,似乎没有。但是再看一遍,两个冒号隔开的路径值是两个,而不是1。 "/path1::/path2" 不起作用的$PATH不包含一个。我知道你把“。”放在哪里。在路径中,所以我将尝试将其导出到路径中。
-
在您的控制脚本中,我会添加
PATH="$PATH:.",而不是依赖调用具有“。”的脚本的用户。在 PATH 中。 -
$PATH 中的一个空字段(即两个相邻的
:)指的是当前目录。这确实可以解释差异。