From 848d0637c70805bc8372b7b3343c036a1b19ba2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E6=AC=A3=E5=BD=A6?= <2779212691@qq.com> Date: Tue, 18 Jun 2024 23:42:13 +0800 Subject: [PATCH] 50 --- ...03\345\217\230\351\207\217\357\274\211.md" | 345 ++++++++++++++++++ 1 file changed, 345 insertions(+) create mode 100644 "50\351\202\261\346\254\243\345\275\246/20240618\357\274\210\347\216\257\345\242\203\345\217\230\351\207\217\357\274\211.md" diff --git "a/50\351\202\261\346\254\243\345\275\246/20240618\357\274\210\347\216\257\345\242\203\345\217\230\351\207\217\357\274\211.md" "b/50\351\202\261\346\254\243\345\275\246/20240618\357\274\210\347\216\257\345\242\203\345\217\230\351\207\217\357\274\211.md" new file mode 100644 index 0000000..9383e54 --- /dev/null +++ "b/50\351\202\261\346\254\243\345\275\246/20240618\357\274\210\347\216\257\345\242\203\345\217\230\351\207\217\357\274\211.md" @@ -0,0 +1,345 @@ +## 环境变量 + +- 类型(局部、全局) + +#### 设置环境变量方法 + +1. ##### 命令行(临时的,重启失效) + + ```bash + alias l = 'ls -la' + ``` + + ```bash + aa = 111 + #全局的环境变量,只在当前shell会话中有效 + ``` + +2. ##### 脚本文件,永久保存 + + ```bash + vim .bashrc + alias l = 'ls -la' + #需要重启才能生效 + source .bashrc + ``` + + ```bash + #用户级编辑用户的 ~/.bashrc 或 ~/.profile文件 + export aa = 111 + #export 变量名 = 值 + #系统级编辑 /etc/environment 或 /etc/profile文件 + aa = 111 + # 这里不需要使用 `export` 命令。保存文件后,变量会在系统启动时生效 + ``` + +#### 系统启动 + +1. ```bash + #系统级 + /etc/environment 加载系统胡环境变量,没登录前 + ``` + +2. ```bash + #系统级(存储在系统范围的配置文件中,为所有用户和系统服务提供全局的环境设置) + /etc/profile 系统被登录,就加载,任何人登录 + ``` + +3. ```bash + #用户级(存储在家目录的个人配置文件中,定义用户个性化的设置) + ~/.profile 具体哪个登录后,加载自己目录下的文件 + ``` + +4. ```bash + #用户级 + ~/.bashrc 加载对就对shell环境文件进行设置(不同的shell加载不同的文件bash加载.bashrc,zsh加载.zshrc) + ``` + + ```bash + cat .profile 查看加载的shell是哪个 + ``` + + + + +#### 环境变量的设置和使用 + +1. 设置路径变量(PATH) + + ```bash + # 在 ~/.bashrc 中添加 + export PATH=$PATH:/path/to/your/scripts + ``` + +2. 定义Java环境变量(JAVA_HOME) + + ```bash + # 在 ~/.bashrc 或 /etc/environment 中添加 + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 + export PATH=$JAVA_HOME/bin:$PATH + ``` + +3. 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + + ```bash + # 在 ~/.bashrc 中添加 + export HTTP_PROXY=http://proxy.example.com:8080 + export HTTPS_PROXY=http://proxy.example.com:8080 + ``` + +4. 配置编辑器(EDITOR) + + ```bash + # 在 ~/.bashrc 中添加 + export EDITOR=/usr/bin/vim + ``` + +5. 设置语言和地区(LANG、LC_系列变量) + + ```bash + # 在 ~/.bashrc 或 /etc/environment 中添加 + export LANG=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 + ``` + +6. 自定义命令别名(alias) + + ```bash + # 在 ~/.bashrc 中添加 + alias ll='ls -alF' + alias grep='grep --color=auto' + ``` + +7. 设置临时环境变量 + + ```bash + # 临时设置变量 + export MY_VAR="value" + ``` + +##### 修改语言 + +1. 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码 + + ```bash + qxy@qxy:/home/qxy$ vim .bashrc + export LANG=zh_CN.utf8 + ``` + +2. 使用`LANGUAGE`变量,让你的命令提示为中文 + + ```bash + qxy@qxy:/home/qxy$ vim .bashrc + export LANGUAGE=zh_CN.utf8 + ``` + + + +#### 常用环境变量 + +**系统级** + +* `PATH` 可执行文件的搜索路径 +* `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 +* `LANGUAGE` 用于设置消息语言的优先级 ,提示语言为中文 +* `EDITOR` 默认文本编辑器 editor + +**用户级** + +* **`HOME`** :当前用户的主目录。 +* **`USER`**:当前用户名。 +* **`UID`**:当前用户的用户ID。 +* **`SHELL`**:当前用户的默认Shell。 + +### 5. 临时变量与环境变量 + +定义一个变量时,在变量名前加了export关键字,就是环境变量,作用域是全局环境子子进程中也有效,否则就是临时变量,只在当前脚本文件或shell中有效。 + +命令行示例: + +```bash +MY_NAME="张三" # 临时变量(局部) +echo $MY_NAME +bash -c 'echo $MY_NAME' +# 什么结果?对比下面的效果 + +export MY_NAME="张三" # 临时变量(全局) +echo $MY_NAME +bash -c 'echo $MY_NAME' # 子进程 +# 看下效果 +``` + + + +脚本文件示例 : + +`test1.sh` + +```bash +#!/bin/bash +MY_NAME="张三" # 前面加上export再试一次 +echo "test:我的名字是:$MY_NAME" +./subscript.sh +``` + +`test2.sh`: + +```bash +#!/bin/bash +echo "test2:你的名字是: $MY_NAME" +``` + +**临时变量**:在脚本中定义但不导出的变量仅在脚本执行期间有效,不会影响其他 shell 会话或子进程。 + +**环境变量**:使用 `export` 导出的变量在当前 shell 会话和所有子进程中都有效。 + + + +##### 作业 + +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +qxy@qxy:~$ env +SHELL=/bin/bash +LANGUAGE=zh_CN:zh +PWD=/home/qxy +LOGNAME=qxy +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +qxy@qxy:~$ export HOME="拉拉" +qxy@qxy:/home/qxy$ echo $HOME +拉拉 + +``` + +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +qxy@qxy:/home/qxy$export MY_AGE=18 + +``` + +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +qxy@qxy:/home/qxy$ echo $MY_AGE +18 +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ```bash + qxy@qxy:~$ echo $MY_AGE + + #为空值,因为是临时设置的环境变量只会在当前shell会话中有效 + ``` + + + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +export PATH=$PATH:/home/qxy +``` + +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash +qxy@qxy:~$ export PATH=/tmp:$PATH +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +qxy@qxy:~$ echo $PATH +/tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +``` + +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +qxy@qxy:/home/qxy$ vim .bashrc +export MY_NAME="奥德彪" +``` + +如何让`MY_NAME`生效,并验证 + +```bash +qxy@qxy:/home/qxy$ source .bashrc #重启 +qxy@qxy:/home/qxy$ echo $MY_NAME +奥德彪 +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +qxy@qxy:~$ vim .bashrc +#进入注释掉不要的 +qxy@qxy:~$ unset MY_NAME +#删除环境变量 +#unset 变量名 +``` + +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +qxy@qxy:~$ vim .bashrc +qxy@qxy:~$ source .bashrc +qxy@qxy:~$ echo $EDITOR +nano + +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +qxy@qxy:/home/qxy$ vim .bashrc +export LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +qxy@qxy:/home/qxy$ vim .bashrc +export LANGUAGE=zh_CN.utf8 +``` + + + -- Gitee