From 89646b8abebf4e504b6d4c9e5b9477c1a2dec2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E5=BF=A0=E9=92=A6?= <11785125+mei-zhongqin@user.noreply.gitee.com> Date: Wed, 19 Jun 2024 13:20:03 +0000 Subject: [PATCH] =?UTF-8?q?08=20=E6=A2=85=E5=BF=A0=E9=92=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梅忠钦 <11785125+mei-zhongqin@user.noreply.gitee.com> --- ...57\345\242\203\345\217\230\351\207\217.md" | 408 ++++++++++++++++++ ...30\351\207\217\347\273\203\344\271\240.md" | 188 ++++++++ 2 files changed, 596 insertions(+) create mode 100644 "08 \346\242\205\345\277\240\351\222\246/2024.06.18 \345\221\250\346\234\237\344\273\273\345\212\241\357\274\214\347\216\257\345\242\203\345\217\230\351\207\217.md" create mode 100644 "08 \346\242\205\345\277\240\351\222\246/2024.06.18 \347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" diff --git "a/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \345\221\250\346\234\237\344\273\273\345\212\241\357\274\214\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \345\221\250\346\234\237\344\273\273\345\212\241\357\274\214\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000..d46ee45 --- /dev/null +++ "b/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \345\221\250\346\234\237\344\273\273\345\212\241\357\274\214\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,408 @@ +# 周期任务: + +cron是一种基于时间任务调度的程序,用于在特殊时间或者时间间隔自动执行任务。 + +### cron的配置文件: + +用户级cron任务,每个用户都有自己的cron任务配置文件 : + +`/var/spool/cron/crontabs/username`。 + +系统级Cron任务:系统级的Cron任务配置文件位于`/etc/crontab`和`/etc/cron.d/`目录下。 + +**周期性任务目录**:这些目录包含在特定时间间隔运行的脚本,例如: + +* `/etc/cron.hourly/` +* `/etc/cron.daily/` +* `/etc/cron.weekly/` +* `/etc/cron.monthly/` + +### 编辑cron + +使用`crontab` 命令来编辑、查看或者删除自己的cron任务[用户级] + +crontab = crontable 时间周期表,计划任务表 + +```bash +编辑cron任务 +crontab -e #edit + + +查看cron任务 +crontab -l # list + + +删除cron任务 + +crontab -r # remove + +``` + +### cron语法: + +```bash +* * * * * command_to_execute # command_to_execute 可以是命令也可以是包含命令的文件 +- - - - - +| | | | | +| | | | +----- 星期几 (0 - 7) (星期天 = 0 或 7) +| | | +------- 月份 (1 - 12) +| | +--------- 日期 (1 - 31) +| +----------- 小时 (0 - 23) ++------------- 分钟 (0 - 59) +``` + + + +### cron中的特殊符号: + +```bash +**常用的如下:** + +1. **星号(`*`)** + + * **含义**:匹配任何值,,即每一。 + * **示例**:在分钟字段中使用 `*` 表示每一分钟都运行一次任务。 + + * * * * * /path/to/command + +2. **逗号(`,`)** + + * **含义**:指定一个列表值,列出所有指定值 a,b,c。 + * **示例**:在小时字段中使用 `0,6,12,18` 表示任务将在每天的0点、6点、12点和18点运行。 + + 0 0,6,12,18 * * * /path/to/command + +3. **短横线(`-`)** + + * **含义**:指定一个范围值,开始-结尾。 + * **示例**:在日期字段中使用 `1-5` 表示任务将在每个月的1号到5号之间运行。 + + 0 0 1-5 * * /path/to/command + +4. **斜杠(`/`)** + + * **含义**:指定步长值,即间隔。 + * **示例**:在分钟字段中使用 `*/15` 表示任务每15分钟运行一次。 + + */15 * * * * /path/to/command + +5. **L(Last)** + + * **含义**:表示最后一个。可以在月的天数或星期几中使用。 + * **示例**:在日期字段中使用 `L` 表示每个月的最后一天。 + + 0 0 L * * /path/to/command + + * **示例**:在星期几字段中使用 `5L` 表示每个月的最后一个星期五。 + + 0 0 * * 5L /path/to/command +``` + +### 注意事项 + +1、路径问题: cron任务运行时使用的环境变量可能与用户的交互式shell不同,确保在脚本中使用绝对路径。 + +2、权限问题: 确保脚本具有可执行的权限,并且cron任务的用户有权限执行该脚本。 + + + +### 系统及任务: + +crontab/cron.d + +在Debian和其他基于Unix的操作系统中,`/etc/crontab` 和 `/etc/cron.d/` 目录用于管理系统级的计划任务。虽然它们的功能类似,但在使用场景和配置格式上有一些细微的区别。以下是它们的详细介绍和使用场景: + + + + + + + +周期性任务目录 + +### 目录说明 + +1. **`/etc/cron.hourly/`**:每小时运行一次目录中的所有脚本。 +2. **`/etc/cron.daily/`**:每天运行一次目录中的所有脚本。 +3. **`/etc/cron.weekly/`**:每周运行一次目录中的所有脚本。 +4. **`/etc/cron.monthly/`**:每月运行一次目录中的所有脚本。 + +### **使用方法** + +1. **创建脚本**:将要定期运行的脚本放置到相应的目录中。 + +2. **设置权限**:确保脚本具有执行权限。可以使用以下命令设置: + +```bash +chmod +x /etc/cron.daily/your_script.sh +``` + +### 注意事项 + +1. **脚本格式**:确保脚本是可执行的,并且首行包含正确的shebang(例如 `#!/bin/bash`)。 +2. **日志记录**:为调试和审计目的,可以在脚本中添加日志记录功能,以便了解脚本的执行情况。 +3. **测试脚本**:在将脚本放入周期性任务目录之前,最好手动测试脚本,以确保其在预期环境下正常工作。 + +通过将脚本放置到相应的周期性任务目录中,可以轻松实现定期自动化任务的管理,无需手动编辑cron表。这样不仅简化了管理任务的复杂性,还提高了系统的自动化和可靠性。 + + + + + + + +# 环境变量: + +理解和使用Linux环境变量对于管理和配置系统至关重要。以下是关键的知识点、常用场景以及示例的综合整理: + +### 1. 环境变量的类型和作用 + +* **用户级别环境变量**: + + * 存储在用户家目录的个人配置文件中,例如 `~/.bashrc`、`~/.profile`。 + * 用于定义**用户个性化**的Shell设置,如别名、路径等。针对不同用户独立设置 + +* **系统级别环境变量**: + + * 存储在系统范围的配置文件中,如 `/etc/environment`、`/etc/profile` 。/etc/profile.d目录 + * 为**所有用户和系统服务**提供全局的环境设置。java_home、python + +### 2. 环境变量的加载顺序和文件 + +* **系统启动加载**:/etc/environment ,一开源就加载,初始化 + +* **登录Shell加载顺序**: + + * 首先加载 `/etc/profile`,然后根据用户登录方式加载 `~/.profile`(存在性依次加载)。 + * 非登录shell: su 切换用户 等 source + +* **交互式Shell加载顺序**: + + * 加载 `~/.bashrc` 或类似文件,用于设置用户个性化的Shell环境。 + * 不同的shell加载不同的文件,bash才加载.bashrc,zsh加载.zshrc + * 交互式:提供命令行窗口,非交互式:直接写在脚本里 + +* **总结来说** + + * 配置文件的理论加载顺序通常是 `/etc/environment` > `/etc/profile` > `~/.profile` > `~/.bashrc`。【实验】 + +### 3. 设置环境变量的方法 + +​ 设置变量的位置:命令行(临时),脚本文件(永久) + +#### 3.1 临时设置环境变量:临时变量(局部),临时环境变量(全部) + +​ 可以使用 `export` 命令来临时设置一个环境变量,例如: + +```bash +export MY_VAR="value" # export 变量名=值 环境变量是全局的,整个环境有效 MY_VAR="value" # 少了export 就是临时变量,不是全局的 +``` + + + +​ 这种设置只在当前Shell会话中有效,关闭Shell会话后会失效。 + +#### 3.2 永久设置环境变量: + +​ **用户级别的** : 编辑用户的 `~/.bashrc` 或 `~/.profile` 文件,并添加如下行: + +```bash +export MY_VAR="value" +``` + +​ 保存文件后,新的设置会在下次登录时生效。 + +​ **系统级别的:** 编辑 `/etc/environment` 或 /etc/profile文件,并添加类似以下行: + +```bash +MY_VAR="value" +``` + +这里不需要使用 `export` 命令。保存文件后,变量会在系统启动时生效。 + +#### 3.3 环境变量的设置和使用示例 + +3.1 设置路径变量(PATH) + +```bash +# 在 ~/.bashrc 中添加 +export PATH=$PATH:/path/to/your/scripts +``` + +3.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.3 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + + +```bash +# 在 ~/.bashrc 中添加 +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 +``` + + + +3.4 配置编辑器(EDITOR) + + +```bash +# 在 ~/.bashrc 中添加 + export EDITOR=/usr/bin/vim +``` + +3.5 设置语言和地区(LANG、LC_系列变量) + + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export LANG=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 +``` + +3.6 自定义命令别名(alias) + + +```bash +# 在 ~/.bashrc 中添加 +alias ll='ls -alF' alias grep='grep --color=auto' +``` + +3.7 设置临时环境变量 + + +```bash +# 临时设置变量 +export MY_VAR="value" +``` + + + +### 4. 常用环境变量 + +打印所有环境变量: + printenv + #或 + env + +**系统级** + +* `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 会话和所有子进程中都有效。 + +### 6. 总结: + +### 4.1 分类 + +#### 按生命周期分 + +* 永久环境变量 写在指定类型的配置文件,永不失效 ~/.bashrc /etc/profile.d/xxx.sh +* 临时环境变量 临时使用export 命令设置的环境变量 退出终端即失效 + +#### 按作用域分 + +* 系统级环境变量 对所有用户生效 /etc/profile.d/xxx.sh +* 用户级环境变量 只对当前用户生效 ~/.bashrc + + + + + +# 作业: + +```bash +1. 每天3:00执行一次 + 0 3 * * * touch ~/a.txt +2. 每周六2:00执行 + 0 2 * * 6 touch ~/a.txt +3. 每周六1:05执行 + 5 1 * * 6 touch ~/a.txt +4. 每周六1:25执行 + 25 1 * * 6 touch ~/a.txt +5. 每天8:40执行 + 40 8 * * * touch ~/a.txt +6. 每天3:50执行 + 50 3 * * * touch ~/a.txt +7. 每周一到周五的3:40执行 + 40 3 * * 1-5 touch ~/a.txt +8. 每周一到周五的3:41开始,每10分钟执行一次 + 41-59/10 3 * * 1-5 touch ~/a.txt +9. 每天的10:31开始,每2小时执行一次 + 31 10/2 * * * touch a.txt +10. 每周一到周三的9:30执行一次 + 30 9 * * 1-3 touch ~/a.txt +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 + 0 8,9 * * 1-5 touch ~/a.txt +12. 每天的23:45分执行一次 + 45 23 * * * touch ~/a.txt +13. 每周三的23:45分执行一次 + 45 23 * * 3 touch ~/a.txt +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 + 30 8,9,10,11,13,14,15,16,17 * * 1-5 touch ~/a.txt + 50 8,9,10,11 * * 1-5 touch ~/a.txt +16. 每天16:00、10:00执行一次0 10,16 * * * touch ~/a.txt + 0 10,16 * * * touch ~/a.txt +17. 每天8:10、16:00、21:00分别执行一次 + 10 8,16,21 * * * touch ~/a.txt +18. 每天7:47、8:00分别执行一次 + 47 7,8 * * * touch ~/a.txt +``` + + + + diff --git "a/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" "b/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" new file mode 100644 index 0000000..ea49515 --- /dev/null +++ "b/08 \346\242\205\345\277\240\351\222\246/2024.06.18 \347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" @@ -0,0 +1,188 @@ +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + +```bash +abc@hecs-288034:~$ printenv +SHELL=/bin/bash +HISTSIZE=1000 +HISTTIMEFORMAT=%F %T abc +PWD=/home/abc +LOGNAME=abc +XDG_SESSION_TYPE=tty +MOTD_SHOWN=pam +HOME=/home/abc +LANG=en_US.UTF-8 +LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: +SSH_CONNECTION=183.253.241.94 1523 192.168.0.220 22 +XDG_SESSION_CLASS=user +TERM=xterm +USER=abc +SHLVL=1 +XDG_SESSION_ID=1144 +XDG_RUNTIME_DIR=/run/user/1003 +SSH_CLIENT=183.253.241.94 1523 22 +PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +SSH_TTY=/dev/pts/0 +_=/usr/bin/printenv + + + +abc@hecs-288034:~$ env +SHELL=/bin/bash +HISTSIZE=1000 +HISTTIMEFORMAT=%F %T abc +PWD=/home/abc +LOGNAME=abc +XDG_SESSION_TYPE=tty +MOTD_SHOWN=pam +HOME=/home/abc +LANG=en_US.UTF-8 +LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: +SSH_CONNECTION=183.253.241.94 1523 192.168.0.220 22 +XDG_SESSION_CLASS=user +TERM=xterm +USER=abc +SHLVL=1 +XDG_SESSION_ID=1144 +XDG_RUNTIME_DIR=/run/user/1003 +SSH_CLIENT=183.253.241.94 1523 22 +PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +SSH_TTY=/dev/pts/0 +_=/usr/bin/env + +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + +```bash +abc@hecs-288034:~$ echo $HOME +/home/abc +``` + +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + +```bash +abc@hecs-288034:~$ export MY_AGE=18 + +``` + +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + +```bash +abc@hecs-288034:~$ echo $MY_AGE +18 + +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + +无任何显示,设置的临时环境变量只有在当前shell会话显示 + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + +```bash + abc@hecs-288034:~$ export PATH=$PATH:/home/abc +abc@hecs-288034:~$ echo $PATH +/tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/abc + +``` + +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash + + +abc@hecs-288034:~$ export PATH=/tmp:$PATH + + +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + +```bash +abc@hecs-288034:~$ 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 + +abc@hecs-288034:~$ vim ~/.bashrc +abc@hecs-288034:~$ source ~/.bashrc +abc@hecs-288034:~$ echo $MY_NAME +奥德彪 + +``` + +如何让`MY_NAME`生效,并验证 + +```bash +abc@hecs-288034:~$ source ~/.bashrc +abc@hecs-288034:~$ echo $MY_NAME +奥德彪 + +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + +```bash +abc@hecs-288034:~$ unset MY_AGE +abc@hecs-288034:~$ echo $MY_AGE +abc@hecs-288034:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +abc@hecs-288034:~$ echo $PATH +/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/biE + + +``` + +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + +```bash +abc@hecs-288034:~$ export EDITOR=nano +abc@hecs-288034:~$ echo $EDITO +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +abc@hecs-288034:~$ export LANG=zh_CN.utf8 + +abc@hecs-288034:~$ echo $LANG +zh_CN.utf8 + + +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +abc@hecs-288034:~$ export LANGUAGE=zh_CN +abc@hecs-288034:~$ echo $LANGUAGE +zh_CN + +``` -- Gitee