前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11-2 环境是如何建立的

11-2 环境是如何建立的

作者头像
见贤思齊
发布2020-08-11 10:47:16
2980
发布2020-08-11 10:47:16
举报
文章被收录于专栏:初见Linux初见Linux

二、环境是如何建立的

用户登录系统后,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章讲过)的机理:

代码语言:javascript
复制
foo="This is  some"
echo $foo
foo=$foo" text."
echo $foo

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

④ 怎么做?
代码语言:javascript
复制
PATH=$PATH:$HOME/bin

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

HOME/bin 添加到 PATH 值的尾部之后,当系统需要检索用户输入的命令时,
HOME/bin 添加到 PATH 值的尾部之后,当系统需要检索用户输入的命令时,

HOME/bin这个路径就会处于被搜索的路径列表中。这就意味着,当我们想在主目录下创建名为 bin 的目录,并在此目录中存放自己的私有程序时,shell 已经为我们准备好了,我们只需将创建的目录称之为 bin 即可。

代码语言:javascript
复制
export PATH

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

⑤ 注意

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、环境是如何建立的
    • 1.shell 会话的 2 种类型
      • (1)login shell会话
      • (2)non-login shell会话
    • 2.启动文件中有什么?
      • (1)PATH变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档