diff --git "a/\346\233\276\347\264\240\350\220\215/0618.md" "b/\346\233\276\347\264\240\350\220\215/0618.md" new file mode 100644 index 0000000000000000000000000000000000000000..5ff140a50786e14e8599d261fdfc560de5bbc2c0 --- /dev/null +++ "b/\346\233\276\347\264\240\350\220\215/0618.md" @@ -0,0 +1,245 @@ +#### 环境变量 + +##### 一、环境变量的类型 + +1、用户级环境变量 + +存储在用户家目录的个人配置文件中,主要用于定义用户个性化的shell的设置 + +2、系统级环境变量 + +存储在系统范围的配置文件中,主要为所有用户和系统服务提供全局的环境设置 + +##### 二、系统启动 + +``` +1、 /etc/environment 加载系统自带的环境变量,不管有没有登录 +2、 /etc/profile 系统被登录就加载,任何人登录 +// 1和2属于系统级 +3、 ~/.profile 具体哪个人登录后,加载自己目录下的文件 +4、 ~/.bashrc 加载对应的shell配置文件 +// 3和4属于用户级 +``` + +配置文件的加载顺序是 /etc/environment > /etc/profile > ~/.bashrc> ~/.profile + +##### 三、查看环境变量 + +``` +env +//全局 显示当前用户的所有环境变量 +echo $PATH +//局部 查看指定环境变量 +``` + + + +##### 四、(1)设置变量的位置 + +``` +1、命令行(临时) +alias l='ls -la' +//当用户断开连接之后就不能执行,找不到该命令 +2、脚本文件(永久) .bashrc +vim .basherc +//在.bashrc文件中写命令 +alias 1='ls -la' +source .bashrc +``` + +##### (2)临时设置环境变量:临时变量(局部),临时环境变量(全部) + +export 命令来设置临时的一个环境变量 + +语法:export 变量名='值' + +``` +vim .one_profile +export name=call_dad +source .one_profile +echo $name +// 断开连接后找不到该命令,临时环境变量 +``` + +局部和全局的区别在于export,有export就是全局变量 + +``` +export myname=zsp (临时全局) +youname=tt (临时局部) +echo $myname,$youname +bash -c 'echo $myname' //能显示出myname的值 +bash -c 'echo $youname' //没有显示任何值 +``` + +``` +脚本文件示例: +1、局部 +a.sh中 +MY_NAME='张三' +echo $MY_NAME +./b.sh +b.sh中 +echo '我是$MY_NAME' + +// ./a.sh 结果:张三和我是$MY_NAME +2、全局 +a.sh中 +export MY_NAME='张三' +...... +b.sh中 +把echo后面的''改成"",双引号才能解析变量 +``` + + + +##### 五、常用环境变量 + +**系统级** + +* `PATH` 可执行文件的搜索路径 +* `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 +* `LANGUAGE` 用于设置消息语言的优先级 ,export LANGUAGE=zh_CN.utf8,提示语言为中文 +* `EDITOR` 默认文本编辑器 editor + +**用户级** + +* **`HOME`** :当前用户的主目录。 +* **`USER`**:当前用户名。 +* **`UID`**:当前用户的用户ID。 +* **`SHELL`**:当前用户的默认Shell。 + +##### 一个命令被执行经过几步 + +1、先判断是不是绝对路径,是就直接执行,不是就下一步 + +2、判断是不是别名,是就执行别名对应的命令,不是就下一步 + +3、从环境变量PATH值对应的路径中找,有就执行 + + + + + +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +env +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +echo $HOME +``` + +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +export MY_AGE=18 +``` + +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_AGE +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ``` + 找不到该命令,因为在环境变量PATH里找不到MY_AGE的路径 + ``` + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +export PATH=$PATH:/root +``` + +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +``` + +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +export PATH=/tmp:$PATH +``` + +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +vim a.sh +export MY_NAME=奥德彪 +echo $MY_NAME +``` + +如何让`MY_NAME`生效,并验证 + +``` +source .MY_NAME +a.sh +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +upset MY_AGE +upset PATH +``` + +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +export EDITOR=nano +//可以写到.bashrc文件中 +source .bashrc +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +``` +export LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +``` +export LANGUAGE=zh_CN.utf8 +``` +