/etc/profile、/etc/bashrc、.bash_profile、.bashrc

在 Linux 系统中,尤其是使用 Bash shell 的系统中,环境变量和 shell 配置文件的管理非常重要。下面是对 /etc/profile/etc/bashrc~/.bash_profile~/.bashrc 以及 ~/.bash_logout 的详细说明,以及它们之间的关系。

1. /etc/profile

  • 功能:为系统中所有用户设置环境变量和启动程序。
  • 执行时机:用户登录时执行一次。
  • 内容:通常会从 /etc/profile.d 目录加载其他配置文件。
  • 注意事项:不建议直接修改此文件,建议在 /etc/profile.d/ 目录中创建新的 shell 脚本进行定制化修改。

英文描述

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

2. /etc/bashrc/etc/bash.bashrc

  • 功能:为每个运行 Bash shell 的用户提供全局函数和别名。
  • 执行时机:每次打开一个新的 Bash shell 时执行。
  • 内容:通常包含全局的函数和别名定义。
  • 注意事项:可以直接修改以影响所有用户,但建议通过 /etc/profile.d/ 目录中的脚本进行定制。

英文描述

# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

3. ~/.bash_profile

  • 功能:每个用户的个人配置文件,设置用户专属的环境变量和启动程序。
  • 执行时机:用户登录时执行一次。
  • 内容:通常会设置一些环境变量,并且会调用 ~/.bashrc
  • 注意事项:如果不存在 ~/.bash_profile,系统会查找 ~/.bash_login~/.profile

4. ~/.bashrc

  • 功能:用户的 Bash shell 配置文件,包含用户专属的 shell 信息。
  • 执行时机:每次打开新的 Bash shell 时执行。
  • 内容:通常包括别名、函数和其他用户特定的配置。
  • 注意事项:此文件会被 /etc/bashrc 调用,因此可以继承全局设置。

5. ~/.bash_logout

  • 功能:当用户退出 shell 时执行的脚本。
  • 执行时机:用户退出时执行。
  • 内容:通常用于清理工作或保存状态。

总结

  • 登录 shell vs 非登录 shell

    • 登录 shell 会读取 /etc/profile~/.bash_profile,并可以递归调用 ~/.bashrc
    • 非登录 shell 直接读取 ~/.bashrc,这意味着在图形界面中打开的终端通常不会读���登录相关的配置文件。
  • 全局与个人配置

    • /etc/profile/etc/bashrc 是全局配置,影响所有用户。
    • ~/.bash_profile~/.bashrc 是用户个人配置,仅影响当前用户。

推荐配置方式

  • 如果希望在任何情况下都能使用某些环境变量和别名,建议将它们放入 ~/.bashrc 中。
  • 对于需要在登录时设置的环境变量,可以放入 ~/.bash_profile 中,并确保在其中调用 ~/.bashrc

通过合理配置这些文件,可以确保在不同的 shell 会话中拥有一致和高效的工作环境。

posted @ 2020-11-10 14:26  John-Python  阅读(268)  评论(0编辑  收藏  举报