source .bashrc
报错:
if: Expression Syntax.
--------------------------------------------------------------------------------
查看:https://stackoverflow.com/questions/14440105/bashrc-if-expression-syntax-error
You can check your shell by echoing $SHELL
, and you can check which version of bash with $BASH_VERSION
. (If the latter is unset, your shell is not bash.)
不同的 shell 之间语法有一些差异。
查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:
[zcy@ubuntu ~]$ echo $SHELL
/bin/csh
[zcy@ubuntu ~]$ echo $BASH_VERSION
BASH_VERSION: Undefined variable.
--------------------------------------------------------------------------------
果然是 shell 的问题。于是:
[zcy@ubuntu ~]$ exec bash
解决问题。
Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。例如:
Windows、Mac OS、Android 等操作系统不一样,它们都由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会开发多款功能类似的软件。
而 Linux 不一样,它是“万国牌”,由多个组织机构开发,不同的组织机构为了发展自己的 Linux 分支可能会开发出功能类似的软件,它们各有优缺点,用户可以自由选择。Shell 就是这样的一款软件,不同的组织机构开发了不同的 Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。
Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。
常见的 Shell 有 sh、bash、csh、tcsh、ash 等。
sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。
sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。
BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。
tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。
bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。
尽管如此,bash 和 sh 还是有一些不同之处:
Shell 是一个程序,一般都是放在/bin
或者/user/bin
目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells
文件中。/etc/shells
是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。
通过 cat 命令来查看当前 Linux 系统的可用 Shell:
$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh
往往是指向/bin/bash
的符号链接。
如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:
$ echo $SHELL
/bin/bash
输出结果表明默认的 Shell 是 bash。
查看环境变量是否设置 env | grep LD_LIBRARY_PATH csh or tcsh: From csh or tcsh, if not set: setenv LD_LIBRARY_PATH /usr/local/lib From csh or tcsh, if already set: setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:
bash or ksh: From bash or ksh, if not set: export LD_LIBRARY_PATH=/usr/local/lib From bash or ksh, if already set: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib sh: From sh, if not set: LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH From sh, if already set: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH
http://c.biancheng.net/cpp/view/6995.html
http://www.gnu.org/software/bash/manual/bashref.html#index-exec-113
https://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html