diff --git "a/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..3a936a64e231685d7dbfe359b7262c714b9f75f8 --- /dev/null +++ "b/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,145 @@ +# 环境变量 + +1. 用户级别 + + 存储在用户家目录的个人配置文件中,eg. `~/.bashrc`、`~/.profile` + + 用于定义用户个性化的Shell设置,如别名、路径等 + +2. 系统级别 + + 存储在系统范围的配置文件中,eg`/etc/environment`、`/etc/profile` + + 为所有用户和系统服务提供全局的环境设置。java_home + +3. 加载顺序(通常) + + `/etc/environment` > `/etc/profile` > `~/.profile` > `~/.bashrc` + +4. 临时环境变量 + + 局部: + + ```bash + gaoyashi@iZf8zh6micauwcw30jcu5tZ:~$ myname=yyy + ``` + + 全局:export + + ```bash + export MY_VAR="value" # export 变量名=值 环境变量是全局的,整个环境有效 + ``` + + 定义一个变量时,在变量名前加了**export**关键字,就是环境变量,作用域是全局环境子子进程中也有效,否则就是临时变量,只在当前脚本文件或shell中有效 + +5. 永久环境变量 + + 用户级别: + + 编辑用户的 `~/.bashrc` 或 `~/.profile` 文件 + + ```bash + export MY_VAR="value" # 保存文件后,新的设置会在下次登录时生效 + ``` + + 系统级别: + + 编辑 `/etc/environment` 或 /etc/profile文件 + + ```bash + MY_VAR="value" # 这里不需要使用 `export` 命令。保存文件后,变量会在系统启动时生效 + ``` + +6. 设置和使用实例 + + - 设置路径变量(PATH) + + ```bash + # 在 ~/.bashrc 中添加 + export PATH=$PATH:/path/to/your/scripts + ``` + + - 定义Java环境变量(JAVA_HOME) + + + ```bash + # 在 ~/.bashrc 或 /etc/environment 中添加 + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 + export PATH=$JAVA_HOME/bin:$PATH + ``` + + - 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + + + ```bash + # 在 ~/.bashrc 中添加 + export HTTP_PROXY=http://proxy.example.com:8080 + export HTTPS_PROXY=http://proxy.example.com:8080 + ``` + + - 配置编辑器(EDITOR) + + + ```bash + # 在 ~/.bashrc 中添加 + export EDITOR=/usr/bin/vim + ``` + + - 设置语言和地区(LANG、LC_系列变量) + + + ```bash + # 在 ~/.bashrc 或 /etc/environment 中添加 + export LANG=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 + ``` + + - 自定义命令别名(alias) + + + ```bash + # 在 ~/.bashrc 中添加 + alias ll='ls -alF' + alias grep='grep --color=auto' + ``` + + - 设置临时环境变量 + + + ```bash + # 临时设置变量 + export MY_VAR="value" + ``` + +7. ### 常用环境变量 + + **系统级** + + * `PATH` 可执行文件的搜索路径 + * `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 + * `LANGUAGE` 用于设置消息语言的优先级 ,提示语言为中文 + * `EDITOR` 默认文本编辑器 editor + + **用户级** + + * **`HOME`** :当前用户的主目录。 + * **`USER`**:当前用户名。 + * **`UID`**:当前用户的用户ID。 + * **`SHELL`**:当前用户的默认Shell。 + +8. 总结 + + #### 按生命周期分 + + - 永久环境变量 写在指定类型的配置文件,永不失效 ~/.bashrc /etc/profile.d/xxx.sh + + - 临时环境变量 临时使用export 命令设置的环境变量 退出终端即失效 + + + + #### 按作用域分 + + * 系统级环境变量 对所有用户生效 /etc/profile.d/xxx.sh + * 用户级环境变量 只对当前用户生效 ~/.bashrc + + \ No newline at end of file diff --git "a/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" "b/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..91a10b346a9ecd02213833f33b14d4a2edfdb692 --- /dev/null +++ "b/45\351\253\230\351\233\205\350\257\227/20240618_\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" @@ -0,0 +1,137 @@ +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# printenv +root@iZf8zh6micauwcw30jcu5tZ:~# env +``` +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# echo $HOME +/root +``` +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# export MY_AGE=18 +``` +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_VARIABLE +root@iZf8zh6micauwcw30jcu5tZ:~# echo $MY_AGE +18 +``` +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ```bash + root@iZf8zh6micauwcw30jcu5tZ:~# echo $MY_AGE + + 看不到赋予的值,因为在新的会话中没有继承这个临时环境变量。 + 用export命令临时设置的,仅在当前会话有效 + ``` + + + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# export PATH="$HOME:$PATH" +``` +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# export PATH="/tmp:$PATH" +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# echo $PATH +/tmp:/root:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +``` +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# echo 'export MY_NAME="奥德彪"' >> ~/.bashrc +``` +如何让`MY_NAME`生效,并验证 + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# source ~/.bashrc +root@iZf8zh6micauwcw30jcu5tZ:~# echo $MY_NAME +奥德彪 +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# sed -i '/MY_AGE/d' ~/.bashrc +root@iZf8zh6micauwcw30jcu5tZ:~# sed -i '/^\/tmp/d' ~/.bashrc +root@iZf8zh6micauwcw30jcu5tZ:~# sed -i '/MY_NAME/d' ~/.bashrc +root@iZf8zh6micauwcw30jcu5tZ:~# source ~/.bashrc +``` +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# export EDITOR=nano +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# ls -l /etc/profile +-rw-r--r-- 1 root root 769 Apr 11 2021 /etc/profile +root@iZf8zh6micauwcw30jcu5tZ:~# chmod +x /etc/profile +root@iZf8zh6micauwcw30jcu5tZ:~# vim /etc/profile + export LANG=zh_CN.utf8 +root@iZf8zh6micauwcw30jcu5tZ:~# source /etc/profile +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +root@iZf8zh6micauwcw30jcu5tZ:~# ls -l /etc/profile +-rw-r--r-- 1 root root 769 Apr 11 2021 /etc/profile +root@iZf8zh6micauwcw30jcu5tZ:~# chmod +x /etc/profile +root@iZf8zh6micauwcw30jcu5tZ:~# vim /etc/profile + export LANGUAGE=zh_CN.utf8 +root@iZf8zh6micauwcw30jcu5tZ:~# source /etc/profile +root@iZf8zh6micauwcw30jcu5tZ:~# ls -W +ls: 不适用的选项 -- W +请尝试执行 "ls --help" 来获取更多信息。 +``` +