学习笔记——环境变量

掌握 alias 使所有终端生效的办法。也就是自定义环境变量的方法。

变量相关

+ 缩写命令
# alias vth0="vim /etc/sysconfig/network-scripts/ifcfg-eth0"
# alias lt="ls -lhtr /tmp"
# alias        查询当前系统所有缩写命令

使 alias 在所有终端生效
# vim ~/.bashrc
alias vth0="vim /etc/sysconfig/network-scripts/ifcfg-eth0"
# source ~/.bashrc

+ PS1 命令行字符串
CentOS 默认命令行字符串 [root@localhost~]#
[root@centos2 ~]# echo $PS1
[\u@\h \W]\$
[root@centos2 local]# PS1='[\u@\h \w]\$ '
[root@centos2 /usr/local]# 
u    用户
h    主机名,后面要有空格
W    当前目录的缩写目录
w    当前目录的绝对路径
$    表示符号 #,在表达式中后面要有空格


+ 更改 umask
# umask 021        临时更改umask
# vim /etc/profile.d/umask.sh        永久更改 umask
#! /bin/bash
umask 0012
# source /etc/profile


Linux系统中,目录的默认权限755,文件默认权限644
若建立目录文件,必须有可执行权限,所有权限开放,最大777 == rwx rwx rwx
目录默认权限=(rwx rwx rwx)777-(--- -w- -w-)022=(rwx r-x r-x)755

若建立文件,不需要有可执行权限,只有rw,最大666==rw- rw- rw-
文件默认权限=(rw- rw- rw- )666 -(--- -w- -w-)022=rw- r-- r-- 644
NOTE:关于umask的计算,不能换算成数字做加减。
比如当umask=033时,
文件默认权限为666-033=633
实际上权限为"rw-rw-rw-" — “----wx-wx" == "rw-r--r--" ==644

umask 第一位是代表 suid sgid 和 sticky_bit 
setuid=4  setgid=2  stidy_bit=1
和 r w x 的计算方法一致。

掌握自定义 PATH 在多终端可用的方法。
PATH 变量
# echo $PATH        查看当前环境变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

自定义环境变量
# vim /etc/profile.d/path.sh
#! /bin/bash
export PATH=$PATH:/tmp/
# source /etc/profile


如果想删除自定义的变量,除了在 path.sh 中删除相应的内容外,还需要重新定义一下 PATH
PATH= /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin,把不需要的 path 去掉即可



如果是要在系统级别自定义环境变量,不要直接编辑这两个文件。在 /etc/profile.d/ 目录下编辑 name.sh 文件,然后 source /etc/profile 即可。
系统级别环境变量

/etc/profile 系统环境变量,对所有用户永久生效
内设PATH,USER,LOGNAME,MAIL,INPUTRC,HOSTNAME,HISTSIZE,umask,export全局声明等等。
在 /etc/profile 文件里面有份声明,
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
在 /etc/profile.d/ 下面创建自定义的 sh 文件,然后 source /etc/profile,就可以在所有终端所有用户下生效。

/etc/bashrc 系统级别的变量,针对所有 shell,所有用户
预设 umask PS1
在bashrc 文件内,也有和 /etc/profile 里面一样的声明,在 /etc/profile.d 目录下创建自定义文件,不建议修改此文件。
 

若要配置环境变量,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登录,.bashrc 文件总会被调用。

.bash_profile 中定义的变量不能再 crontab 中使用。
隐藏环境变量
除了上述两个系统级别的变量,每个用户的家目录下面还有隐藏的变量文件。

.bash_profile 定义当前用户环境变量PATH
定义用户个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登陆时,该文件仅仅执行一次。

.bashrc 定义当前用户别名
包含专用于你的shell的bash信息,当登陆时以及每次打开新的shell时,文件被读取。可以讲用户自定义的alias或者自定义变量写到文件中。

.bash_history
记录命令历史

.bash_logout
退出shell时候,会执行该文件。建议把清理工作放到此文件中。


.bash_profile 和 .bashrc 的区别
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.
[root@centos2 ~]# cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

配置文件 .bash_profile 在执行的时候会去调用 .bashrc。所以 .bash_profile 的优先级会高于 .bashrc,如果 .bashrc 里面定义了一个别名 alias vth0="vim /etc/sysconfig/network-scripts/ifcfg-eth0",但是在 .bash_profile 里面做了 unset vth0 的处理,那么这个别名不会生效。 假设反过来,会生效。

.bashrc          >>>>  alias vth0="vim /etc/sysconfig/network-scripts/ifcfg-eth0"
.bash_profile    >>>>  unset vth0
这种情况 vth0 不会生效

.bashrc          >>>>>  unset name
.bash_profile    >>>>>  name=wangbin
这种情况,变量会生效

1. 当直接在 login 界面登陆登陆、使用 ssh 登陆或者 sudo 切换用户登陆时,.bash_profile 会被调用来初始化 shell 环境
2. 当不登录系统,而使用 ssh 直接在远程执行命令的时候,调用 .bashrc 文件。
3. 当已经登陆系统,每打开一个新的 Terminal 时,会调用 .bashrc 文件。 
NOTE: 


  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值