【发布时间】:2012-09-05 13:04:21
【问题描述】:
我最近切换到 ksh93 shell。我通过在我的 .profile 文件中添加以下两行来做到这一点
export SHELL=/usr/local/bin/ksh93
exec $SHELL
自从我这样做后,一些简单的脚本开始以我不理解的方式出现异常。我将其缩小到以下简单的脚本,称为 say test.sh
#!/bin/ksh
echo $0 $1
如果我输入命令test.sh fred,我希望看到相同的输出test.sh fred。相反,我看到test.sh noglob。如果我删除 shebang 或将其更改为 #!/usr/local/bin/ksh93,则脚本将按预期工作。
谁能解释发生了什么,或者该怎么做?我被难住了。
如果有什么不同的话,我使用的是 Solaris 5.9。
【问题讨论】:
-
/bin/ksh中有什么内容?大概是一个 shell 脚本,它以某种方式替换了$1的值,可能是出于粗心。 -
@tripleee /bin/ksh 是 korn shell(我在切换到 ksh93 之前使用的那个)
-
嗯,那一大堆命令可能值得进一步研究。
-
在 Solaris 上,
/bin/ksh是(默认情况下)ksh的实际可执行文件。不支持--version只是表明它是一个真实的(并且可能是旧的)Korn shell。 -
听起来好像
ksh启动文件中的某些东西正在破坏传递给脚本的选项,可能使用set -- noglob,但更可能使用更微妙的机制(但set可能数据)。仔细查看echo之前的所有命令。
标签: shell unix solaris ksh shebang