diff --git "a/39 \345\221\250\350\211\263/note/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/39 \345\221\250\350\211\263/note/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..5741346ae59cf6b884e11929e5b4fd8e2fd629fa --- /dev/null +++ "b/39 \345\221\250\350\211\263/note/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,227 @@ +#### 环境变量 + +1. 命令行:临时命令 + +2. 环境变量文件 .bashrc(永久) + +3. source 要加载的文件:加载变量文件 + +4. 系统 + + * 系统启动:/etc/environment,加载系统级的环境变量,不管等不登录 + * /etc/profile:系统被登录就加载,任何人登录 + * su 切换不会加载 + +5. 个人: + + * ~/.profile:具体哪个人登录后,加载自己目录下的文件 + * ~/.bashrc:加载对应的SHELL文件 + +6. 一个命令被执行经过 + + * 先判断是不是绝对路径,是就执行,不是就下一步 + * 判断是不是别名,是就执行,不是就执行下一步 + * 从环境变量PATH值对应的路径中找有没有这个命令,有就执行,没有就下一步 + * 报错,没有该命令 + +7. 配置文件的理论加载顺序通常是 `/etc/environment` > `/etc/profile` > `~/.profile` > `~/.bashrc + +8. 设置环境变量的方法 + + * 设置变量的位置:命令行(临时),脚本文件(永久) + * 临时设置环境变量:临时变量(局部),临时环境变量(全部) + * export:可以临时设置一个环境变量(只在当前shell会话中有效,关闭后就会失效) + +9. 永久设置环境变量 + + * 用户级别~/.bashrc和~/.profile文件: + * 保存文件后,新的设置会在下次登录时生效 + * export 变量=值 + * 系统级别:/etc/environment和/etc/profile文件 + * 保存文件后,新的设置会在下次登录时生效 + * 可以不用export + +10. 设置路径变量(PATH) + +11. 常用的环境变量 + + * 系统级 + + * PATH` 可执行文件的搜索路径 + + * `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 + + * `LANGUAGE` 用于设置消息语言的优先级 ,提示语言为中文 + + * `EDITOR` 默认文本编辑器 editor + + * 用户级 + + * `HOME` :当前用户的主目录。 + + * `USER`:当前用户名。 + * `UID`:当前用户的用户ID + * SHELL当前用户的默认Shell + +#### 作业 + +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# printenv +SHELL=/bin/bash +LANGUAGE=zh_CN.utf8 +PWD=/root +LOGNAME=root +XDG_SESSION_TYPE=tty +MOTD_SHOWN=pam +HOME=/root +LANG=en_US.UTF-8 +SSH_CONNECTION=183.250.50.167 27245 172.29.194.84 22 +XDG_SESSION_CLASS=user +TERM=xterm +USER=root +SHLVL=1 +XDG_SESSION_ID=1985 +XDG_RUNTIME_DIR=/run/user/0 +SSH_CLIENT=183.250.50.167 27245 22 +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus +SSH_TTY=/dev/pts/0 +_=/usr/bin/printenv +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# echo $HOME +/root +``` + +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# export MY_AGE=18 +root@iZf8zfcpducv0jeuu04xmhZ:~# echo $MY_AGE +18 +``` + +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_AGE +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ```bash + root@iZf8zfcpducv0jeuu04xmhZ:~# echo $MY_AGE + + #不能显示MY_AGE的值 + #因为这个只是临时的环境变量,是临时的 + ``` + + + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# vim /etc/profile +export PATH=$PATH:/root +``` + +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash + +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# echo $PATH +/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +root +``` + +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# vim /.bashrc +root@iZf8zfcpducv0jeuu04xmhZ:~# cat /.bashrc +export MY_NAME=奥德彪 +root@iZf8zfcpducv0jeuu04xmhZ:~# source /.bashrc +root@iZf8zfcpducv0jeuu04xmhZ:~# echo $MY_NAME +奥德彪 +``` + +如何让`MY_NAME`生效,并验证 + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# source /.bashrc +root@iZf8zfcpducv0jeuu04xmhZ:~# echo $MY_NAME +奥德彪 +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。un + + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# unset MY_NAME +root@iZf8zfcpducv0jeuu04xmhZ:~# unset PATH +``` + +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash + +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +``` +root@iZf8zfcpducv0jeuu04xmhZ:~# vim /etc/profile +export LANG=zh_CN.utf8 +LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +root@iZf8zfcpducv0jeuu04xmhZ:~# vim /etc/profile +export LANGUAGE=zh_CN.utf8 +LANGUAGE=zh_CN.utf8 +``` +