bash环境配置

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

    全局配置:

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

/etc/bashrc

    个人配置:

~/.bash_profile

~/.bashrc


按功能划分,存在两类:

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

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

~/.bash_profile

功用:

(1) 定义环境变量,例如PATH、PS1

(2) 运行命令或脚本

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

/etc/bashrc(全局)

~/.bashrc(个人)

功用:

(1) 定义命令别名;

(2) 定义本地变量;


变量:变化的量,在内存空间中储存的数据,看变化的。变量名。

             类型:

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

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

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

位置变量:$1, $2

特殊变量:$?


变量定义方式:

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

自定义变量:

变量赋值:变量名=值


bash是弱类型的编程语言:

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


120:24bits

120: 8bits 


wKiom1XrxgiQ6z2ZAABHHIsH7PY605.jpg

wKioL1XryDDzHsPdAAEyXtDwfPY955.jpg

wKioL1XryDDi1Br0AAAo-rmt0iA521.jpg

wKiom1XrxgnwyeQTAACVrJgvkBY066.jpg

wKioL1XryDCiim53AAAwalKyPsw657.jpg

wKiom1XrxgnA4fTWAAAprKUltCQ204.jpg

wKiom1XrxkrT8dEMAABNUiBsZf0774.jpg

wKioL1XryTbhwK4cAAD3GxyMmqg246.jpg

wKiom1Xrxw_xepu0AAAo8I_eRNc484.jpg

wKioL1XryeWy1jTeAACCIXmtxwE814.jpg

wKiom1Xrx76hmf76AAAhSgchbM4729.jpg

wKioL1XryeXjlVecAAA1IA5hcSc169.jpg



定义本地变量:

    name=value

            查看:set

wKioL1Xryz2C-sGWAAJsgnrGg3A358.jpg



定义环境变量:

export name=value

declare -x name=value

                查看:env, printenv, export

wKiom1XryZXRXscdAAD02Y_xBus288.jpg


撤消变量:

unset name

wKiom1Xr0Zux31LYAAD0VBd-k4w001.jpg

引用变量:

${name}, $name

wKioL1Xr02mxbxleAACuNxbqjY8168.jpg

bash中的引用符号:

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

"":弱引用

``: 命令引用

wKioL1Xr1U3AG9spAABYZlhFdZ8007.jpg

wKioL1Xr1aij8krrAABWVv7GOUU383.jpg

        shell登录类型:

交互式登录:

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

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

非交互式登录:

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

执行脚本;

su Username;

配置文件作用次序:

交互式登录:

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


非交互式登录:

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

                针对所有用户,环境变量

wKioL1Xr2JCB_VZnAAAyOl9QQdw011.jpg     

wKioL1Xr2vui9wA_AAAmnv-vVDc551.jpg     

wKiom1Xr2Q_hYnRjAACe8-77byg941.jpg

wKioL1Xr3vux-DZCAAAf0QeAEpQ760.jpg

wKioL1Xr4kqSHYfSAACt_85eN2w820.jpg

wKiom1Xr4G3T5nATAAA2T-hr03U486.jpg

wKiom1Xr4Qqi215uAAFnzup6dGg700.jpg

wKioL1Xr4r7z-tuLAACZF9boIDQ333.jpg


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

(1) 重新登录;

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

source /PATH/TO/SOMEFILE

. /PATH/TO/SOMEFILE

注意:副作用


问题:

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

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



Linux文件系统上的特殊权限

权限模型:

u, g, o

r, w, x


进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;

(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;

(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;

(3) 进程拥有的访问权限,取决其属主的访问权限:

(a) 进程的属主,同文件属主,则应用文件属主权限;

(b) 进程的属主,属于文件的属组,则应用文件属组权限;

(c) 则应用其它权限;

wKioL1Xr6kDT2pfvAAJPdiplRWw477.jpg

wKioL1Xr6rniyf_HAABYfVVp6UA918.jpg

wKiom1Xr6OqjkS4eAAJaDgbEuHc380.jpg

wKiom1Xr6Quifh4AAAFOjcO06ic153.jpg

SUID:

(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;

(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

        权限设定:

        chmod u+s FILE... 

        chmod u-s FILE...

        注意:

        s: 属主原本拥有x权限;

        S: 属主原本无x权限;



SGID:

默认情况下,用户创建文件时,其属组为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

            权限设定:

chmod g+s FILE...

chmod g-s FILE...

wKiom1Xr-uLRZS82AAGLJKh_FMw565.jpg

wKiom1Xr-8XTttCrAAF0g-rXtAo677.jpg  

wKiom1Xr_IPw6atBAAFgBzaix88088.jpg

wKiom1Xr_TDCLB-5AACNRvdGIIY010.jpg      

wKiom1Xr_V_zIv4FAABW1eYRqA8150.jpg

wKioL1Xr_4fzVZuJAABiCpq9OyY852.jpg

wKioL1Xr_-KhAPXbAAEs_jween4533.jpg

wKiom1Xr_mqRH5W-AABo5uKt6OI700.jpg

wKiom1Xr_p2jjjEiAAELKXnJEcM759.jpg

wKiom1Xr_4SwlX2CAABMyGD6iDo944.jpg

Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;


权限设定

chmod o+t FILE...

chmod o-t FILE...

wKiom1XsAEfhef8sAACDHohT_Ys149.jpg      

wKioL1XsBBfSCtYwAACjEGPKOEE919.jpg  

wKioL1XsBFPij4q2AAA0qjoLS8g716.jpg

SUID, SGID, STICKY

000

001

010

011

100

101

110

chmod 4777 FILE

chmod 3755 DIR