No command 'setenv' found

    今天又遇到一个能够充分证明自己是菜鸟的问题

    我要在ubuntu12.04下编译安装OpenInventor。阅读OpenInventor官方提供的说明README.FIRST,里面用到了一个命令:setenv。我在终端下敲setenv,提示

No command 'setenv' found, did you mean:
 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的错误就容易解释了。
    setenv/unsetenv是用于csh的命令,在ubuntu终端模拟器默认的bash下面解释不了。但是,bash下有与它们对应的命令,即export和unset。具体对应关系如下(参考了这里的解释http://www.cygwin.com/ml/cygwin/2001-02/msg00437.html):
CSH:  setenv name value
BASH: export name=value
 
 CSH:  unsetenv name
 BASH: unset name

    ok,这个问题 就这么解决了。我实在不想再当菜鸟了,任重道远。。。

你可能感兴趣的:(linux,unix,shell,command,ubuntu,bash)