查看环境变量
export
设置环境变量
临时环境变量
export a=b
取消临时变量
删除临时变量.
export -n a
永久环境变量
环境变量作用域
环境变量对当前用户生效
写入用户主目录的 ~/.bashrc
或 ~/.bash_profile
环境变量对所有用户生效
修改 /etc/profile
unset 取消环境变量
unset 能够删除已经定义的环境变量和函数。-f 只删除函数,-v 只删除变量。
在 shell 脚本中,可以使用此命令来回收没用的临时变量,如数组 …
unset GOPROXY
常见的环境变量
PATH
PATH 表示全局路径
CDPATH
cd 命令的查找顺序
当cd命令在当前目录中找不到你指定的文件/目录时,会自动到CDPATH中的目录中寻找。
使用场景
可以在环境变量CDPATH中加入你常用的工作目录,
比如说我常去家目录,也常去/var/log
目录找日志,可以执行如下命令:
$ export CDPATH='~:/var/log'
# cd 命令将会在 ~ 目录和 /var/log 目录扩展搜索
$ pwd
/home/labuladong/musics
$ cd mysql
cd /var/log/mysql
$ pwd
/var/log/mysql
$ cd my_pictures
cd /home/labuladong/my_pictures
这个技巧是十分好用的,这样就免了经常写完整的路径名称,节约不少时间。
需要注意的是,以上操作是 bash 支持的,其他主流 shell 解释器当然都支持扩展cd命令的搜索目录,但可能不是修改CDPATH这个变量,具体的设置方法可以自行搜索。
扩展知识-其他路径简写
用cd -
返回刚才待的目录,直接看例子吧:
$ pwd
/very/long/path
$ cd # 回到家目录瞅瞅
$ pwd
/home/labuladong
$ cd - # 再返回刚才那个目录
$ pwd
/very/long/path
特殊命令!$会替换成上一次命令最后的路径,直接看例子:
# 没有加可执行权限
$ /usr/bin/script.sh
zsh: permission denied: /usr/bin/script.sh
$ chmod +x !$
chmod +x /usr/bin/script.sh
特殊命令!*
会替换成上一次命令输入的所有文件路径**,直接看例子:
# 创建了三个脚本文件
$ file script1.sh script2.sh script3.sh
# 给它们全部加上可执行权限
$ chmod +x !*
chmod +x script1.sh script2.sh script3.sh
alias
alias格式:alias name text
在text中要得到用户传递的参数可以使用以下方式
/!:1 表示第1个参数
/!:2 表示第2个及余下的所有参数
/! 表示所有参数
如:alias test_val ‘@ z = (/!*) ;echo $z’
test_var 1 + 1
得到2
修改 alias
修改 alias 后需要重启 shell
https://www.zhihu.com/question/23137414
由于 alias 的优先级比较高,所以如果与当前某 alias 重名,在不重启当前 shell 的情况下,需要 unalias 旧名字。
也就是当用 alias 定义了一个别名,有毛病,然后写了一个同名函数。如果不重启shell,在shell 中会依然认为是 linux 别名。
alias 传递参数
命令的别名无法直接接受参数, 无效命令举例:
# 把 $1 加一个 @bak 后缀
mv $1 $1@bak
可以把对应的命令变成一个函数,
写成一行字符串函数
要点:
func(){ mv
要有空格;- 注意使用
;
分行. - 最后的
func
表示调用.
alias bak='func(){ mv $1 $1@bak; }; func'
直接在 .bash
中定义函数
# 命名为 _bak 是为了避免和 bak 冲突.
function _bak(){
mv $1 $1@bak
}
alias bak=_bak