配置文件,生效范围划分,存在两类:

全局配置:

/etc/profile, /etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

 

按功能划分,存在两类:

profile类:为交互式登录的shell提供配置

/etc/profile, /etc/profile.d/*.sh

~/.bash_profile

 

功用:

(1) 定义环境变量,例如PATHPS1

(2) 运行命令或脚本

 

bashrc类:为非交互式登录shell提供配置

/etc/bashrc

~/.bashrc

 

功用:

(1) 定义命令别名;

(2) 定义本地变量;

 

变量:内存空间,变量名

类型:

环境变量:作用范围当前shell进程及其子进程

本地变量:作用范围当前shell进程

局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

 

位置变量:$1, $2

特殊变量:$?

 

变量定义方式:

bash内置变量:可直接调用,内置了许多环境变量,例如PATH

自定义变量:

变量赋值:变量名=

 

bash弱类型:

变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

 

12024bits

1208bits 

 

定义本地变量:

name=value

 

查看:set

 

定义环境变量:

export name=value

declare -x name=value

 

查看:env, printenv, export

 

撤消变量:

unset name

 

引用变量:

${name}, $name

 

bash中的引用符号:

'': 强引用,变量替换不会发生

"":弱引用

``: 命令引用

 

shell登录类型:

交互式登录:

直接通过终端进行的登录;

通过su -l Username命令实现的用户切换;

 

非交互式登录:

图形界面下打开的命令行窗口;

执行脚本;

su Username;

 

配置文件作用次序:

交互式登录:

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc --> /etc/bashrc

 

非交互式登录:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

 

编辑配置文件定义的新配置如何生效?

(1) 重新登录;

(2) 让当前shell进程去重新读取指定的配置文件;

source /PATH/TO/SOMEFILE

. /PATH/TO/SOMEFILE

注意:副作用

 

问题:

1、定义对所有用都生效的别名?

       echo alias cls=\’clear\’ >>/etc/profile

2、如果仅需要PATH环境变量的修改仅对root用户生效,该如何操作?

    PATH=$PATH:/root 添加到 /root/.bash_profile