今天又遇到一个能够充分证明自己是菜鸟的问题。
阅读OpenInventor官方提供的说明README.FIRST,里面用到了一个命令:setenv。我在终端下敲setenv,提示
1. No command 'setenv' found, did you mean:
2. Command 'netenv' from package 'netenv' (universe)
久思不得其解。上网
查一下,才知是因为shell版本问题。首先大致了解一下shell各个版本的差异,贴一段从snowdrop新浪博客copy过来的常识:
Bourne Shell(即sh)是UNIX最初使用的shell,平且在每种UNIX上都可以使用。BourneShell在shell编程方便相当优秀,但在处理与用户的交互方便作得不如其他几种shell。
LinuxOS默认的是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与BourneShell完全兼容,并且在BourneShell的基础上增加,增强了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多C Shell和KornShell中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面
C Shell是一种比Bourne Shell更适合的变种Shell,它的语法与C语言很相似。Linux为喜欢使用CShell的人提供了Tcsh。
Tcsh是CShell的一个扩展版本。Tcsh包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似C语言的语法,他不仅和BashShell提示符兼容,而且还提供比Bash Shell更多的提示符参数。
Korn Shell集合了C Shell和Bourne Shell的优点并且和BourneShell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
Linux还包括了一些流行的Shell如:ash,zsh等。每个Shell都有它的用途,有些Shell是有专利的,有些能从Internet或其他来源获得。
一旦当你知道了原来shell还有版本之差,setenv的错误就容易解释了。
解释不了。但是,bash下有与它们对应的命令,即export和unset。具体对应关系如下(参考了这里的解释http://www.cygwin.com/ml/cygwin/2001-02/msg00437.html):
1. CSH: setenv name value
2. BASH: export name=value
3.
4. CSH: unsetenv name
5. BASH: unset name
ok,这个问题
就这么解决了。我实在不想再当菜鸟了,任重道远。。。