9_Shell语言———bash的配置文件

不同的使用者对程序的需求不同,这就决定了要为用户提供配置环境的接口。通常情况下这类配置使用环境的文件是文本文件,常见的有xml,json,soap等。

bash的配置文件用来配置bash的使用环境。前文中提过,查看环境变量的命令有:printenv、export、set、env等。bash的环境变量常见的有:PATH: 命令搜索路径;HISTFILE:命令历史的保存位置;SHELL:当前用户使用的shell;HOME:当前用户的家目录。

在打开终端后,我们能看见命令提示符前面的字符串:[[email protected] ~]#,事实上这个字符串也是由环境变量决定的,即PS1,可以使用set命令查看:

# set

bash为PS1提供了很多宏。宏和变量类似,但不完全等同于变量,PS1中使用的宏有: \u:当前用户的用户名

\h:当前主机的主机名第一段

\W:当前工作的目录的基名

\!:当前命令在命令历史中是第几条

\#:当前命令是命令中的第几条  // 命令历史可保存到下次开机,

// 当前命令关机即结束

更多的PS1宏可以通过man bash来查找:

# man bash

/PS1

n

PS1可以由我们自行指定,例如要显示当前的时间、当前命令在命令历史中是第几条,可进行以下设置:

# export PS1=’\t \!\$’

上述例子中可以看到,bash的环境变量作用范围是有限的,当切换至centos用户后,promt又还原了。环境变量的作用范围是由bash配置文件的类别决定的。

bash配置文件的类别主要有:

profile类:主要用于交互式登录的用户。所谓交互式登陆的用户,包括以下两种:

1.直接从终端登录的用户

2.使用 su - USERNAME 或 su -l USERNAME 登陆的用户

属于profile类的文件主要有:

/etc/profile: 应用全局,即对所有的用户都有效

/etc/profile.d/*.sh: 也是应用全局,对所有的用户都有效,是上一个文件的补

充。如果profile文件过大,则需要将之切片,每一段分别存为一个.sh文件。

--------------------------------只有管理员才有权限修改上述两个文件---------------------------------

~/.bash_profile:在每一个用户的家目录下都有这个文件,该配置仅对用户自   身有效——普通用户可对此文件任意修改。

profile类的配置文件功能主要有:

1. 设定环境变量

2. 运行命令或脚本

如果想让某用户登陆系统后,能看到“Welcome!User”的字样,且显示登陆系统的时间,就可以在其家目录下的bash_profile文件中增加一行echo脚本语句:

# nano .bash_profile

echo “It is $(date +%T). Welcome! $USER”

再次登陆该用户就能看到欢迎语了

bashrc类:非交互式登录的用户,非交互式登陆的用户主要有:

1.使用 su USERNAME登陆的用户     //对比交互式: su - USERNAME

2.在图形界面下打开的模拟终端(伪终端)

3.自动执行的脚本。 在实际工作中运行自动执行的脚本如果出错,有可能是当前用户的配置文件有问题,因此写脚本时最好遵循一个原则——尽可能不依赖于当前用户环境。

属于bashrc类的文件主要有:

/etc/bashrc: 全局有效。

~/.bashrc:家目录下的配置文件,仅对用户自身有效。

bashrc类的配置文件功能主要有:

1. 设定本地变量

2. 定义命令的别名

如何使用配置文件?

首先举个例子,如果某用户想为某个命令设置别名,并让该别名永久有效,就可以编辑其家目录下的.bashrc文件:

# nano .bashrc    // 增加一行 alias cls=clear后保存

编辑的配置文件不会马上生效,需要重新登录才能生效,但它会永久有效。

其他用户登陆了则没有效,因为.bashrc只对当前用户有效。如果要对全局有效,需要修改/etc/bashrc文件

通常让环境变量生效的方式有两种:

1.重新登录;

2.使用source FILE命令将刚才编辑过的文件读取一遍。

3.使用source命令的同名命令 . FILE 也可以达到相同的效果

例如为当前Linux系统安装jdk后,为jdk配置环境变量,且该环境变量对全局有效,可以进行如下操作:

# nano /etc/profile.d/java.sh            //在/etc/profile.d下新建一个jdk的配置文件

export JAVA_HOME=/usr/java/latest    //在nano中编辑此项

# echo $JAVA_HOME                        //此时会发现没有生效

# . /etc/profile.d/java.sh                //也可以使用 source /etc/profile.d/java.sh

# echo $JAVA_HOME                        //这时发现jdk的环境变量已经生效了

注意普通用户在定义环境变量时,不能删除原来的值而定义到其他目录下,如不能写成export PATH=/root这种形式,这样会导致命令无法执行。正确的做法是在原有的路径前面或后面加上新路径,即:export PATH=$PATH:/root

注意,这样定义的PATH只对当前用户有效,想要永久保存这个PATH,需要修改bash的配置文件:

# nano /etc/profile

PATH=$PATH:/root

# echo $PATH

通常情况下不建议设置全局变量,因为全局变量对所有的用户都有效。

bash配置文件的加载顺序:

先来考虑一种情况,如果/etc/profile 文件中定义了一个变量,同时 /etc/profile.d/*.sh中也定义了一个变量,且两个变量名一样,但是值不一样,这样就会发生冲突。那么在读取配置文件时以哪一个为准呢?其标准是后读取的文件,为最终生效的文件。

对于交互式登录的用户,读取次序为:

① /etc/profile —>② /etc/profile.d/*.sh —>③ ~/.bash_profile —>④ ~/.bashrc —>⑤ /etc/bashrc

对于非交互式登录的用户,读取次序为:

①~/.bashrc—>②/etc/bashrc—>③/etc/profile.d/*.sh

9_Shell语言———bash的配置文件,布布扣,bubuko.com

时间: 2024-10-24 00:54:48

9_Shell语言———bash的配置文件的相关文章

菜鸟学Linux - bash的配置文件

bash是各大Linux发行版都支持的shell.当我们登陆bash的时候,虽然我们什么都没做,但是我们已经可以在bash中调用各种各样的环境变量了.这是因为,系统中已经定义了一系列的配置文件,以及加载这些配置文件的规则.下面通过CentOS举例说明.在这之前,我们需要了解两个概念:login shell与non-login shell.很明显,这二者的区别在于需不需要login,同时这两种shell加载配置文件的规则也不相同. login shell:通俗的讲,当我们登陆shell时,需要输入

2_Shell语言———bash简介

一.初识bash Bash是一种解释型语言,但它也提供了交互式接口,支持变量,因此提供了编程环境,所以可以称bash为程序语言. 解释型语言属于弱类型语言,其特点为: 1.它不强制区分变量类型,即无论存储什么数据,默认均以字符格式(ASCII码)存储. 2.不需要事先声明变量,需要时直接使用,直接赋值: 在弱类型语言中,定义变量通常为: [set] VAR_NAME=Value    //set可以省略 引用变量为: ${VAR_NAME}            //大多数情况下花括号可以省略

12、自学——Linux的学习进度与任务【bash的配置文件】

bash的配置文件 bash的配置文件: 持久保存用户配置 profile类:为交互式登录的用户提供配置 /etc/profile 全局 /etc/profile.d/*.sh 全局 ~/.bash_profile 个人配置,仅对当前用户有效 功能: 设定环境变量 用来实现运行命令或者脚本 如何读取配置文件: /etc/profile -->/etc/profile.d/*.sh -->~/.bash_profile-->~/.bashrc -->/etc/bashrc bashr

Linux基础(8)关于bash的配置文件

shell的类型除了图形shell和命令行shell之外,从登陆者的角度又可以划分为登陆式shell以及非登录式shell. 登录式shell:  三种情况 1.正常通过某个终端登陆的shell 2.su - username 3.su -l username 非登录式shell: 1.su username 2.图形终端下打开的命令行窗口 3.自动执行的shell脚本 对于我们最常用的bash的许多特性是由配置文件决定的.bash的配置文件分为两种:全局配置,个人配置 1.全局配置文件 /et

关于bash的配置文件加载

bash的配置文件分为两类全局配置 /etc/profile  /etc/profile.d/*.sh  /etc/bashrc个人配置 ~/.bash_profile  ~/.bashrc profile类的配置:设定环境变量:运行命令或脚本bashrc类的配置:设定本地变量:定义命令别名 登录式shell如何读取配置文件 (通过本地命令行或远程终端登录:su - username)/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profil

Bash的配置文件

    在linux中,shell中的bash的配置文件分为俩类:profile类和bashrc类,他们分别定义了bash工作的一些特性. 按功能划分: profile类: --->  /etc/profile  /etc/profile.d./sh ~/.bash_profile 用于定义环境变量 开机执行的脚本 bashrc类 --->  /etc/bashrc  ~/.bashrc 用于定义本地变量 命令别和名函数 当然,这只是使用中默认的规则定义,也完全可以不这样安排.       有

bash的配置文件(linux学习之八)

一.什么是shell 广义的shell指,能够操作应用程序的接口都成为shell,(包括linux和windows的图形界面) 狭义的shell指,命令行方面的程序,包括zsh,bash,csh,等等 查看当前系统的可用shell,文件/etc/shells 中所列的shell,称为当前系统上安全的shell列表.默认shell如果非文件/etc/shells中的shell,很可能拒绝登入系统. [[email protected] ~]# cat /etc/shells  /bin/sh /b

Bash环境配置文件

一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc,一旦发现有就立即执行.在ubuntu 10.04中, /etc/profile存在,用户主目录下有.bashrc文件. 二.环境配置文件简介 1./etc/profile 由系统管理程序建立的一个全系统(sytstem-wide)的初始化文件,Shell提示符出现在屏幕上之前,该文件就被读取了.功

linux shell编程之bash 常见配置文件

先说一个命令: source +  配置文件 或者 . (点) 配置文件 source 强制性配置文件生效 主要环境变量的文件: 优先级: 其他配置文件: