前言
在bash进程中,读取到bash进程内存中的数据,在bash进程终止时,进程中的数据会被操作系统回收,变量也是定义在当前shell进程内存空间的数据。在shell终止时,变量也会失效
作用
选项:定义命令的工作行为
配置文件也能定义工作行为,主要存储命令的诸多选项,定义长期有效的行为
功能
让用户能更好的使用bash
配置文件的分类
对所有用户生效的配置:
/etc/profile,/etc/profile.d/
/etc/bashrc
对当前用户有效
~/.bashrc
~/.bash_profile
profile类,定义环境变量和脚本
bashrc类:定义本地变量和别名
登陆式切换:会读取目标用户的配置文件,初始化环境
1)su -l user
2)输入密码登陆
1
2
3
4
5
6
|
# echo $PATH
/usr/local/apache/bin
:
/usr/local/nginx/sbin
:
/usr/local/sbin
:
/usr/local/bin
:
/usr/sbin
:
/usr/bin
:
/root/bin
# su -l testbash
-sh-4.2$
echo
$PATH
/usr/local/nginx/sbin
:
/usr/local/bin
:
/bin
:
/usr/bin
:
/usr/local/sbin
:
/usr/sbin
-sh-4.2$
|
读取配置文件的顺序: profile --> profile.d --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
1
2
3
4
5
6
7
8
9
10
|
$ nano
/etc/profile
.d
/nginx
.sh
##在profile.d中定义nginx的二进制文本的路径在$PATH之前
export
PATH=
/usr/local/nginx/sbin
:$PATH
$ vim ~/.bash_profile
##在~/.bah_profile中¥PATH之前定义mysql的二进制文件的路径
PATH=
/usr/local/mysql/bin
:$PATH:$HOME/.
local
/bin
:$HOME
/bin
export
PATH
如果先读到的,显示在后,读取配置文件的顺序在前
重启
bash
进程
$
echo
$PATH
/usr/local/mysql/bin
:usr
/local/nginx/sbin
:
|
非登陆式切换:不会读取目标用户的配置文件
2)无需输入密码登陆:su user, 图形界面下的终端
2)脚本运行时,在当前shell的子shell中运行
1
2
3
4
5
|
# echo $PATH
/usr/local/apache/bin
:
/usr/local/nginx/sbin
:
/usr/local/sbin
:
/usr/local/bin
:
/usr/sbin
:
/usr/bin
:
/root/bin
# su testbash
$
echo
$PATH
/usr/local/apache/bin
:
/usr/local/nginx/sbin
:
/usr/local/sbin
:
/usr/local/bin
:
/usr/sbin
:
/usr/bin
:
/root/bin
|
读取配置文件的顺序:~/.bashrc --> /etc/bashrc --> profile.d
******验证脚本运行为当前shell的子shell进程*********
环境变量对当前shell的子shell进程生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@izpo45bh60h6bsz ~]
# name="obama jerry" ##有空格的字符引用,加引号,否则会报错
[root@izpo45bh60h6bsz ~]
# echo $name
obama jerry
[root@izpo45bh60h6bsz ~]
# declare -x name ##申明为环境变量
[root@izpo45bh60h6bsz ~]
# nano tr_d_dc_s_I.sh
#!/bin/bash
echo
$name
[root@izpo45bh60h6bsz ~]
# chmod +x tr_d_dc_s_I.sh ##给予脚本执行权限
[root@izpo45bh60h6bsz ~]
# ls -l tr_d_dc_s_I.sh
-rwxr-xr-x 1 root root 23 Jun 10 14:48 tr_d_dc_s_I.sh
[root@izpo45bh60h6bsz ~]
# ./tr_d_dc_s_I.sh ##变量生效
obama jerry
[root@izpo45bh60h6bsz ~]
# unset name ##撤消变量
[root@izpo45bh60h6bsz ~]
# ./tr_d_dc_s_I.sh ##变量为空
[root@izpo45bh60h6bsz ~]
#
|
本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1952878,如需转载请自行联系原作者