【linux】 profile和bashrc, ~/.profile ,~/.bashrc

影响范围

(1) profile和bashrc

影响范围加载

/etc/profile

/etc/profile.d/

系统(对所有用户起作用)系统登录后
~/.profile用户启动bash shell
/etc/bash.bashrc系统系统登录后
~/.bashrc用户启动bash shell

当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell启动时,首先要确保执行的启动脚本就是 /etc/profile。

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

配置环境变量一般在这两种文件中。先讲讲什么时候执行,后面再介绍这两种文件做了什么。

profile在系统登录后执行,只在登录系统时执行一次,包括针对系统的/etc/profile针对用户的~/.profile。

bashrc在每次启动bash shell(打开终端或者在终端输入sh)后执行,包括针对系统的/etc/bash.bashrc针对用户的~/.bashrc(这里注意一下我的ubuntu里是/etc/bash.bashrc,其它系统可能是/etc/bashrc)

cat /etc/profile
cat /etc/bash.bashrc
cat ~/.profile
cat ~/.bashrc

ubuntu下关于profile和bashrc中环境变量的理解 - https://www.cnblogs.com/liaohuiqiang/p/7197581.html?utm_source=itdadao&utm_medium=referral

脚本不会继承~/.bashrc中的别名设置

脚本是在一个新的子进程中执行的,该子进程继承了父进程(即shell)的环境变量和一些设置,但不继承别名。

如果您希望在脚本中使用 ~/.bashrc 中定义的别名,可以在脚本的开头使用 source 命令来加载 ~/.bashrc 文件。

某网友总结如下:

/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
/etc/profile.d和/etc/inputrc
2然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取
~/.profile,这三个文档设定基本上是一样的,读取有优先关系
3然后在根据用户帐号读取~/.bashrc
至于~/.profile与~/.bashrc的不区别
都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次

bashrc与profile的区别

/etc/bashrc 每个脚本执行前都执行一遍这个

~/.bashrc  用户登录时以及用户执行脚本 都执行一遍这个

login shell 和non-login shell

login shell :登录、执行一些命令、签退。当你签退后,shell也终止了

non-login shell:shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

bashrc用于非交互式non-loginshell,而profile用于交互式login shell。

当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell启动时,首先要确保执行的启动脚本就是 /etc/profile。/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件。

/etc/profile 文件和/etc/profile.d区别

(本节摘抄自::https://blog.csdn.net/xu710263124/article/details/116647467)

当一个用户登录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 中。

在这里插入图片描述

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值