在Linux系统中,当我们在安装新的系统时,经常需要做的就是去修改环境变量,用到的最常见的就是/etc/profile文件,但是你会发现,有个与之相似的文件 /etc/profile.d文件。
那么就来介绍下/etc/profile文件和/etc/profile.d/的区别
1、首先,/etc/profile/ ,此文件涉及系统的环境,即环境变量相关。这里的修改会对所有用户起作用。
当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell启动时,首先要确保执行的启动脚本就是 /etc/profile。
注意:只有Login shell 启动时才会运行 /etc/profile 这个脚本,而Non-login shell 不会调用这个脚本。
一些重要的变量就是在这个脚本文件中设置的,含义如下:
PATH:预设可执行文件或命令的搜索路径
USER:用户登录时使用的用户名
LOGNAME:其值为$USER。
HOSTNMAE:所使用的主机名。
MAIL:存放用户电子邮件的邮箱(实际上是 一个ASCII码文件)
HISTSIZE:历史记录的行数。
INPUTRC:存放的是针对键盘热键的信息(也是一个ASCII码文件)

注意:在/etc/profile 文件中设置的变量是全局变量。
而.bashrc文件(在用户的家目录下),则只对当前用户有用。
在这里插入图片描述
~/.bashrc、 ~/.bash_file 是当前用户目录下的配置信息。修改后可用 source 命令更新。
在这里插入图片描述
可看出 .bashrc文件和 ~/.bashrc 文件内容相同,都为当前用户目录下的配置信息。

/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件。

2、/etc/profile.d/
在/etc/profile.d 目录中存放的是一些应用程序所需的启动脚本,其中包括了颜色、语言、less、vim及which等命令的一些附加设置。
这些脚本文件之所以能够被自动执行,是因为在/etc/profile 中使用一个for循环语句来调用这些脚本。
如图所示:
在这里插入图片描述
而这些脚本文件是用来设置一些变量和运行一些初始化过程的。
介绍一下/etc/profile.d 目录下一些脚本文件中的具体内容。

cd /etc/profile.d
ls

在这里插入图片描述
如果在/etc/profile.d/路径下新建脚本,环境变量如下:

  PATH: 预设可执行文件或命令的搜索路径。env命令显示所有的环境变量 。环境变量以" : "分开。环境变量名前" $ "符号表示该变量本次定义之前的值。

  USER: 用户登录时使用的用户名。

  HOME:当前用户主目录

  SHELL:是指当前用户用的是哪种Shell。set命令显示所有本地定义的Shell变量。

  LOGNAME:指当前用户的登录名。其值为$USER。

  HOSTNAME:所使用的主机名。供应用程序使用。

  PS1:基本提示符(格数如下,用法如右):export PS1="[\u@\h \w]\$"

       \d :代表日期,格式为weekday month date,例如:Wed Dec 12

       \H :完整的主机名称。例如:hostname是debian.linux

       \h :仅取主机的第一个名字,如上例,则为debian,.linux则被省略

       \t :显示时间为24小时格式,如:HH:MM:SS

       \T :显示时间为12小时格式

       \A :显示时间为24小时格式:HH:MM

       \u :当前用户的账号名称 如:root

       \v :BASH的版本信息  如:3.2

       \w :完整的工作目录名称。家目录会以 ~代替 如显示/etc/default/

       \W :利用basename取得工作目录名称,只会列出最后一个目录。如上例则只显示default

       \# :下达的第几个命令

       \$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$ 

  PS2:附属提示符,默认为“>”。 具体参考    http://os.51cto.com/art/201205/334954.htm

  MAIL: 存放用户电子邮件的邮箱(ASCII码文件)。

  HISTSIZE: 保存的历史记录数。

  INPUTRC: 存放的是针对键盘热键的信息(ASCII码文件)。

  LANG/LANGUGE:语言相关的环境变量,多语言用户可以修改。

5、使环境变量生效:source /etc/profile 或者 ./profile,执行一下文件。但不能用 sh /etc/profile。sh 是在子 shell 进程中执行的,即使PATH改变了也不会反应到当前环境中。而 source 是在当前 shell 进程中执行的,所以我们能看到PATH的改变。
6.、export 相当于导出变量。" = "赋值符号定义的变量只在当前shell中可用,外部(子shell中)使用时,定义时需要用export A=“xxx”,或在使用时 使用export A。 如果希望下载软件后不加入路径就能启动该程序,要把可执行程序的路径加入 PATH 中。
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐