美文网首页程序员初见Linux
11-2 环境是如何建立的

11-2 环境是如何建立的

作者: 見贤思齊_ | 来源:发表于2020-08-07 21:47 被阅读0次

    二、环境是如何建立的

    用户登录系统后,bash 程序就会启动并读取一系列称为启动文件的配置脚本,这些脚本定义了所有用户共享的默认环境

    接下来,bash 会读取更多存储在主目录下的用于定义个人环境的启动文件

    这些步骤执行的确切顺序是由启动的 shell 会话类型决定的

    (准)

    1.shell 会话的 2 种类型

    shell 会话存在两种类型,分别为 login shell 会话和 non-login shell 会话

    login shell 会话会提示用户输入用户名和密码,如虚拟控制台会话。

    而我们在 GUI 中启动的终端会话就是一个典型的 non-login shell 会话

    (准)

    (1)login shell会话

    会提示用户输入用户名和密码。

    login shell 会话会读取一个或多个启动文件

    ① login shell 的启动文件
    文件 说明
    /etc/profile 适用于所有用户的全局配置脚本
    ~/.bash_profile 用户的个人启动文件。可 扩展 或 重写 全局配置脚本中的设置
    ~/.bash_login ~/.bash_profile 缺失,则 bash 尝试读取此脚本
    ~/.profile ~/.bash_profile 缺失 与 ~/.bash_login 均缺失,则bash 尝试读取此脚本。在基于 Debin 的Linux版本中(比如Ubuntu),这是默认值。

    (准)

    (2)non-login shell会话

    在 GUI 中启动的终端会话。

    ① non-login shell 的启动文件
    文件 说明
    /etc/bash.bashrc 适用于所有用户的全局配置脚本
    ~/.bashrc 用户的个人启动文件。可 扩展 或 重写 全局配置脚本中的设置
    ② non-login shell继承父类进程的环境

    在读取以上启动文件之外,non-login shell还会继承父类进程的环境,父类进程通常是一个 login shell

    用户可查看本机系统有哪些启动文件,需要注意的是,这些文件大多数以“ . ”开头(这意味着这些文件是被隐藏的),所以用户在使用 ls 命令时需要伴随使用 -a 选项

    ③ ~/.bashrc文件

    在普通用户看来 ~/.bashrc 可能是最重要的启动文件,因为系统几乎总是要读取。non-login shell 会默认读取 ~/.bashrc ,而大多数login shell 的启动文件也能 以读取 ~/.bashrc 文件的方式来编写。

    2.启动文件中有什么?

    (1)PATH变量

    ① 是什么?

    PATH变量通常是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。

    PATH 变量是由启动文件 /etc/profile 中的一段代码设定(当然,这也并不总是如此,这取决于系统的发行版本)。

    ② 为什么?

    指定命令搜索路径。

    当在命令行输入一条命令后,shell 是如何找到这些命令的呢?

    比如说,当我输入命令 ls ,shell 不会搜索整个系统文件来寻找 /bin/ls(这是 ls 命令的完整路径名),而是会搜索 PATH 变量中存储的目录列表

    ③ 参数扩展的机理

    在了解怎么做之前,先来看看参数扩展的机理,借助以下代码理解参数扩展(参数扩展在第7章讲过)的机理:

    foo="This is  some"
    echo $foo
    foo=$foo" text."
    echo $foo
    

    使用参数扩展,用户可将更多的内容添加到变量值的尾部

    ④ 怎么做?
    PATH=$PATH:$HOME/bin
    

    上面这段代码,将 $HOME/bin 添加到了 PATH 值的尾部。这是一个参数扩展的实例。

    在把字符串 HOME/bin 添加到 PATH 值的尾部之后,当系统需要检索用户输入的命令时,HOME/bin这个路径就会处于被搜索的路径列表中。这就意味着,当我们想在主目录下创建名为 bin 的目录,并在此目录中存放自己的私有程序时,shell 已经为我们准备好了,我们只需将创建的目录称之为 bin 即可。

    export PATH
    

    最后一行是如上代码,该 export 命令告诉 shell ,使得 shell 的子进程使用PATH变量的内容

    ⑤ 注意

    很多 Linux 发行版本在默认情况下提供了该 PATH 设置。一些基于 Debian 的发行版本,如 Ubuntu ,会在登录时检查 ~/bin 目录是否存在,若存在,就会自动将其添加到PATH变量中。

    相关文章

      网友评论

        本文标题:11-2 环境是如何建立的

        本文链接:https://www.haomeiwen.com/subject/pfmqdktx.html