目录
环境变量介绍
Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个
专用的运行环境
。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义
。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
- 环境变量是一个
具有特定名字的对象
,它包含了一个或者多个应用程序所将使用到的信息
。通过使用环境变量,你可以很容易的修改一个牵涉到一个或多个应用程序的配置信息。
环境变量命令介绍
- echo显示某个环境变量值echo$PATH
- export设置一个新的环境变量exportHELLO=“hello”(可以无引号)
- env显示所有环境变量
- set显示本地定义的shell变量
- unset清除环境变量unsetHELLO
- readonly设置只读环境变量readonlyHELLO
常见的环境变量
- PATH:决定了shell将到哪些目录中寻找命令或程序
- HOME:当前用户主目录
- MAIL:是指当前用户的邮件存放目录。
- SHELL:是指当前用户用的是哪种Shell。
- HISTSIZE:是指保存历史命令记录的条数
- LOGNAME:是指当前用户的登录名。
- HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
- LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
环境变量文件介绍
系统级
/etc/profile:
在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。/etc/bashrc:
在 bash shell 打开时运行,修改该文件配置的环境变量将会影响所有用户使用的bash shell。/etc/environment:
在系统启动时运行,用于配置与系统运行相关但与用户无关的环境变量,修改该文件配置的环境变量将影响全局。
用户级
~/.profile:
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方~/.bashrc:
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。~/.bash_profile 或 ~./bash_login:
如果有其中的一个文件存在的话, 当启动的是一个 登录shell时,Bash 会执行该文件而不会执行~/.profile ;如果两个文件都存在的话,Bash 将会优先执行~/.bash_profile 而不是~/.bash_login ;~/.bash_logout:
当每次退出系统(退出bash shell)时执行该文件。
shell
图例
类型
概括分类
交互式shell:
如果bash shell不是登录系统时启动的(如是在命令提示符下通过bash命令启动的shell),那么启动的shell叫做交互式shell。交互式shell不像登录shell一样运行,但是依然提供了命令提示符来输入命令。非交互式shell:
非交互shell没有命令提示符,通常用户在执行shell脚本或者系统用户设定的定时器执行的定时脚本都是这类shell。登录shell:
需要用户名、密码登录后才能进入的shell(或者通过–login”选项生成的shell)。非登录shell:
不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell;在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。退出一个登录shell:
exit或者logout;退出一个非登录shell:只能exit。
详细分类
bash
大多数Linux系统默认使用的shell,bash shell是Bourne shell 的一个免费版本,它是最早的Unix shell,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。csh
C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。ksh
Korn shell 的语法与Bourne shell相同,同时具备了C shell的易用特点。许多安装脚本都使用ksh,ksh 有42条内部命令,与bash相比有一定的限制性。tcsh
tcsh是csh的增强版,与C shell完全兼容。sh
是一个快捷方式,已经被/bin/bash所取代。nologin
指用户不能登录zsh
目前Linux里最庞大的一种shell:zsh。它有84个内部命令,使用起来也比较复杂。一般情况下,不会使用该shell。
查看当前系统中所有可登录shell的类型
- cat /etc/shells
- 要查看当前系统中所有可登录shell的类型,在
/etc/shells
配置文件中记录了用户可以登录的shell的具体路径,因此查看这个文件的内容,即可知道当前系统中所支持的所有shell类型。
查看某个用户的Shell类型
- cat /etc/passwd | grep ^username
- 要查看某个用户的Shell类型,可以在
/etc/passwd
文件的最后字段查看到某个特定用户的登录Shell类型。
查看正在运行shell的类型
echo $0
echo $$
获取当前运行的shell进程号(PID),再通过ps -p 进程
号来查看运行的shell类型