Bash与环境变量

Shell Bash 》》》

了解Bash

Linux系统的shell,作为操作系统的外壳,为用户提供使用操作系统的界面。更确切的说,Shell就是Linux内核和用户相互交流的一个程序。作为一个命令语言解释器,用户在提示符下输入的命令都先由shell解释,然后传入Linux内核,内核会作出相应的反应。

Bash (Bourne Again SHell ) 是Linux下的默认Shell

我们系统上合法的Shell 被写入到 /etc/shells 这个文件中,比如通过下面命令查看系统中的所有Shell:

vim /etc/shells

在这里插入图片描述
而这里,除了bash 这个熟悉的Shell 外还有其它奇怪的Shell,比如 /sbin/nologin, 那这是为什么呢?这是因为系统某些服务正在运行过程中会去检查用户能够使用的shells,而这些shell 的查询就是借助 /etc/shells 这个文件。
举例来说, 某些FTP网站会去检查用户的可用shell。而如果你不想要这些用户使用FTP以外的主机资源时,可能会给予该用户一些奇怪的Shell,让用户无法以其他服务登录主机。这个时候,你就得将那些奇奇怪怪的shell 写进 /etc/shells 这个文件中。

还有,我这个用户默认会取得哪一个shel呢?我们登录取得的shell就记录在**/etc/passwd** 这文件内。我们来看一下文件内容:
在这里插入图片描述
如上所示,在每一行的最后一个数据就是你登录后可以取得的默认的shell。
其中也有一些奇怪的 /sbin/nologin

bash的内置命令和外部命令

有一些命令,比如改变工作目录的命令 cd 就是包含在内部的。还有一些命令,例如,拷贝 cp ,移动 rm 。是存在于文件系统中某个目录下的单独的程序。当然,对用户而言不必关心一个命令是建立在Shell内部还是一个独立的程序。

我们可以通过 Shell 内置对象 type 查询该命令是否为内置命令。如下图:
在这里插入图片描述
注意:由于利用type找到后面的名称时,如果后面接的名称并不能以执行文件的状态被找到。那么该名称是不会被显示出来的。也就是说,type主要再找出"执行文件",而不是一般文件名,所以,这一点类似which命令。具体可看man帮助。

命令执行之前的换行(\)

范例:如果命令串太长的话,如何使用两行来输出?
在这里插入图片描述
上面这个命令的用途是将三个文件复制到 /root 这个目录下而已,不过因为命令太长,于是用反斜杠 () 来进行转义,不是开始执行 (enter)。

-----------------------------------------------------------------------

环境变量 》》》

Linux是一个多用户的操作系统,每个用户登录后,都会有一个专门的运行环境。通常,每个用户默认的环境都是相同的,这个默认的环境实际上就是一组环境变量的值。用户可以对自己运行环境进行专门的定制,其方法就是修改相应的系统变量的值。通常,在/etc/profile 文件中修改环境变量,在这里修改的内容是对所用的用户都起作用的。

env(environment)

env 命令可以列出所有的环境变量。当然,export 也会列出一样的内容,只不过还有其它额外的功能。
如下图(具体的环境变量就不)
在这里插入图片描述
在这里插入图片描述
(具体的环境变量就不一 一解释了,先说一下PATH这个环境变量,有空再补)

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zynorl/.local/bin:/home/zynorl/bin

就是执行文件查找的路径和Windows下配置系统环境类似。目录与目录之间以冒号(:)风格。由于文件的查找是依序由path的变量内的目录来查询。所以目录的顺序也很重要。

/ etc / profile

系统环境和启动程序,用于登录设置。 用户可以对自己的运行环境进行专门的定制。
当你登录并且登录shell是bash时,bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~ /.bash_profile, ~/.bash_login或 ~/.profile文件,
并执行找到的第一个可读文件中的命令.当登录bash退出时,它 将执行~/.bash_logout文件中的命令.

查看环境变量:

对于环境变量的查看命令为"echo $ 变量名" (须加上"$“) 。
例如,要查看当前的BASH版本,过程如下:

echo $BASH_VERSION
4.2.46(2)-release

修改环境变量:

设置环境变量的命令为"export 变量名" (不可加上 “$”)。
例如, 要设置60s 内没有任何动作就退出当前 shell, 命令如下:

export TMOUT=60
echo $TMOUT
60
、、、
效果如下(root#-->user~$):
[root@centos07 etc]#  等待输入超时:自动登出
[zynorl@centos07 ~]$
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章