首页 > 系统相关 >Linux Shell:用户配置文件详解

Linux Shell:用户配置文件详解

时间:2024-04-11 09:58:06浏览次数:28  
标签:profile shell 登录 配置文件 用户 Shell Linux bash

Linux Shell:用户配置文件详解

在Linux系统中,用户配置文件扮演着至关重要的角色,它们定义了用户的操作环境,包括环境变量、别名、函数等。这些配置文件在用户登录时被读取和执行,以设置一个为用户量身定制的命令行环境。在这篇文章中,我们将详细介绍Linux中最常见的几种用户配置文件,包括它们的作用、加载顺序和如何编辑它们。

.bash_profile、.profile和.bash_login

当你登录到系统时,如果是登录shell(例如通过SSH登录或在控制台登录),它会查找.bash_profile.profile.bash_login中的一个,并且只读取第一个找到的文件。这些文件主要用于设置环境变量和执行用户登录时需要运行的命令。

解释.bash_profile、.profile和.bash_login之间的区别以及它们是如何工作的。

.bash_profile是专门为bash shell用户设计的,它在登录时被读取并执行。如果.bash_profile不存在,bash会尝试读取.bash_login。如果这两个文件都不存在,bash会寻找并读取.profile文件。这种设计允许不同的shell共享.profile,因为.profile是一种更通用的配置文件,而.bash_profile.bash_login是专门为bash设计的。因此,如果你使用bash,并且想要在登录时自定义你的环境,编辑.bash_profile是最直接的方式。如果你的系统中没有.bash_profile文件,你可以创建一个,并在其中添加你的配置。

在.bash_profile中设置PATH环境变量的示例。

编辑.bash_profile文件,在文件末尾添加以下行来扩展你的PATH环境变量:

export PATH="$PATH:/path/to/your/directory"

这行命令会将指定的目录添加到现有的PATH环境变量中,使得该目录下的可执行文件可以在任何位置被调用。

.bashrc

对于非登录shell(例如,打开一个新的终端窗口),.bashrc文件被读取和执行。这个文件主要用于配置命令别名、函数以及非登录shell的环境变量。

为什么我们需要.bashrc,以及它和.bash_profile之间的区别。

.bashrc是bash shell的另一个核心配置文件,它专门用于非登录shell环境。区别在于,.bash_profile等文件仅在登录时执行一次,用于设置环境变量和执行其他只需在登录时运行一次的命令。相反,每次打开新的终端会话时,.bashrc都会被读取和执行,这使得它成为定义别名、函数和那些需要在每个shell会话中重新应用的环境变量的理想位置。为了确保无论是登录shell还是非登录shell,环境都是一致的,通常会在.bash_profile中添加一条命令来读取.bashrc文件。

在.bashrc中定义别名的示例。

打开.bashrc文件,并在文件中添加如下行:

alias ll='ls -la'

这个别名命令让你可以通过输入ll来执行ls -la命令,后者用于列出目录内容以及隐藏文件,并以详细列表格式展示。

/etc/profile

/etc/profile文件是系统级的初始化脚本,用于设置系统范围内所有用户的环境信息。当任何用户登录时,此文件被执行,并且在读取用户的个人配置文件之前设置全局环境变量和执行全局脚本。这意味着/etc/profile为所有用户提供了一个共同的基础配置。

详细解释

此文件通常用于设置PATH环境变量、定义全局别名和函数等。由于它影响到所有用户,因此通常需要管理员权限才能编辑。例如,如果想为所有用户添加一个新的命令路径,管理员可以在/etc/profile中添加一个PATH变量的扩展。

export PATH="$PATH:/usr/local/bin"

这会将/usr/local/bin添加到系统中所有用户的PATH环境变量中,确保所有用户都可以访问该目录下的程序。

/etc/bash.bashrc

/etc/profile类似,/etc/bash.bashrc是一个系统级别的配置文件,但专门用于bash shell。它在每个bash shell会话的启动时被读取,不仅仅是登录时。这允许系统管理员为所有使用bash的用户定义特定的shell行为,如别名和函数。

详细解释

此文件是bash用户非登录shell会话的全局配置文件。它类似于用户主目录下的.bashrc文件,但作用于所有用户。例如,系统管理员可以在这个文件中设置一个别名,该别名随后会在所有用户的bash会话中可用:

alias update='sudo apt update'

这个别名允许用户通过输入update命令来执行sudo apt update,简化了系统更新的命令。

以上所有文件对比

虽然这些文件都用于配置用户的shell环境,但它们的应用范围和加载时机不同。/etc/profile/etc/bash.bashrc是系统级别的配置文件,影响到所有用户;而.bash_profile.profile.bash_login.bashrc是用户级别的配置文件,仅影响到对应用户的环境。

  • 登录时加载的文件.bash_profile.profile.bash_login(用户级别),/etc/profile(系统级别)。
  • 非登录shell会话加载的文件.bashrc(用户级别),/etc/bash.bashrc(系统级别)。

理解这些文件的不同以及它们如何互动,可以帮助你更好地管理和定制你的Linux环境。

通过这种方式,Linux提供了灵活而强大的工具,允许用户和系统管理员根据需要定制和优化工作环境。无论是通过系统级文件还是个人配置文件,Linux都能够满足不同用户的需求,提供个性化的使用体验。

login shell 和 non-login shell

// TODO 增加login shell 和 non-login shell的说明
在Linux和Unix系统中,shell可以以两种主要模式之一运行:登录shell(login shell)和非登录shell(non-login shell)。这两种模式之间的区别主要在于它们是如何被启动的,以及它们启动时读取和执行的配置文件种类。理解这两种shell的区别对于配置用户环境和行为至关重要。

登录Shell(Login Shell)

登录shell是用户通过登录过程启动的shell,通常发生在用户通过终端登录到系统时。这包括通过SSH远程登录或在图形终端界面(如Linux控制台)输入用户名和密码登录。登录shell的目的是为新登录的用户会话初始化环境,包括设置环境变量、命令别名等。

登录shell在启动时会读取并执行一系列特定的配置文件。对于bash shell,这些配置文件包括(按顺序):

  1. /etc/profile - 一个全局配置文件,为系统上的所有用户设置环境变量和启动脚本。
  2. ~/.bash_profile~/.bash_login~/.profile(仅读取并执行第一个找到的文件)- 这些用户级别的文件允许个性化设置环境和用户特定的启动脚本。

非登录Shell(Non-Login Shell)

非登录shell是用户在已登录的会话内启动的任何额外的shell实例。这包括打开新的终端窗口、执行脚本或通过输入bash命令启动的新shell。非登录shell的目的是为用户提供一个执行命令的环境,而不需要重新初始化所有环境变量或运行登录脚本。

非登录shell读取并执行的配置文件略有不同,主要是:

  1. ~/.bashrc - 这是非登录shell的主要配置文件,包含别名、函数定义和特定于shell会话的环境变量。

有一个常见的实践是在~/.bash_profile(或等价的登录配置文件)中添加一行来显式地读取并执行~/.bashrc文件。这样做是为了确保不论是登录还是非登录shell,用户环境的设置都能保持一致。

总结区别

  • 登录shell用于用户登录到系统时的初始化设置,读取一系列登录配置文件(如/etc/profile~/.bash_profile)。
  • 非登录shell通常用于用户已登录后开启的新shell会话,读取~/.bashrc等配置文件,主要用于快速执行命令。

参考链接

标签:profile,shell,登录,配置文件,用户,Shell,Linux,bash
From: https://blog.csdn.net/kaka_buka/article/details/137498211

相关文章

  • 在linux中迁移Docker默认镜像存储路径解决磁盘空间满的问题
    通过yum或者apt安装的docker通常数据存储在/var/lib/docker/,包括镜像、运行数据等。然而这个目录是在根目录下面,容易导致系统盘满了。如果出现这种情况就需要迁移docker的默认目录。以下基于此说明。本文使用到的docker版本为DockerVersion:24.0.5,宿主机为CentOS7。不......
  • linux 修复ntfs磁盘,安装和使用NTFSfix(安装Ntfs-3g),以在Linux上修复Windows硬盘驱动
    本文介绍在Linux系统中安装和使用NTFSfix(安装Ntfs-3g)的方法,支持Ubuntu、Debian、ArchLinux、Fedora、OpenSUSE,使用它可以在Linux上修复不工作的Windows硬盘驱动器。你是否有运行NTFS文件系统的dirtyWindows硬盘驱动器,遇到问题并且不想重新启动到Windows?如果是这样,别担心,使用......
  • Linux开发、运维常用命令个人心得总结
    1、lsls是“list”的缩写,。它是Linux系统中用于列出目录内容的标准命令。默认情况下,它会以简单的方式显示文件和目录的列表。-l:长格式显示。-a:显示所有文件,包括隐藏文件。2、cd用于改变当前工作目录的命令,cd命令后面通常跟着要切换到的目录的路径。cd..:返回上一级......
  • Linux驱动开发入门实验
    目录一、驱动模块的加载和卸载二、分配和释放设备号三、字符设备注册与注销四、实现设备的具体操作函数五、添加LICENSE和作者信息六、驱动程序完整代码七、编译驱动程序八、加载驱动模块一、驱动模块的加载和卸载Linux驱动有两种运行方式:第一种即是将驱动编译......
  • 如何在windows环境和linux环境运行jar包
    功能:实现对字符串小写转大写java代码如下:packagea_od_test;importjava.util.Locale;/*实现小写转大写打jar包分别在windows环境和liunx环境运行*/publicclassMain28_To_Upper{publicstaticvoidmain(String[]args){if(args.length==......
  • Linux的重要命令(一)
    目录一.查看当前的工作目录-pwd二.切换工作目录-cd三.列表显示目录内容或文件本身-ls四.通配符通配符用法五.设置别名-alias六.统计文件或目录空间占用情况七.创建新目录-mkdir八.创建新文件-touch九.创建链接文件-ln十.复制文件或目录十一.删除文件或目录-rm ......
  • go写入配置文件
    packageinstallimport("fmt""io/ioutil""os"v2"gopkg.in/yaml.v2""github.com/fanux/sealos/net""github.com/fanux/sealos/pkg/logger")const(defaultConfigPath="......
  • 【Linux系统编程】libevent库事件驱动
    libevent库事件驱动libevent库使用创建并初始化event_base结构体。创建并初始化event结构体,并设置文件描述符、监听事件、回调函数、回调函数参数。将event添加到event_base中。开始事件处理循环,监听事件是否发生,并在满足条件时自动调用回调函数。事件处理完成后,释放event......
  • Java程序中两种配置文件(xml和properties)的加载读取方法
    ​ Java程序中,经常需要从配置文件中加载并读取设置,以支持不同的配置环境和参数。最常用的配置文件格式是XML和properties。两种方法都非常基础,适合于简单的配置文件读取需求。对于更复杂的需求,可能需要更高级的解析技术或第三方库。参考文档:Java程序中两种配置文件(xml和prope......
  • 在Linux终端查找指定类型的文件并统计数量
    下面举例说明:find/path/to/directory-typef-execfile{}\;|grep"MIDI"它的作用是在指定的目录(/path/to/directory)中搜索所有的文件(-typef),然后使用file命令检查每个文件的类型,并将结果通过管道传递给grep命令,用于过滤出包含"MIDI"关键词的文件信息。find:......