Linux系统中的环境变量与shell相关

环境变量介绍

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类型
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值