💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 本地变量 生效范围 **当前shell进程** ## 环境变量 生效范围 **当前进程及其子进程** ### 定义方式 ~~~bash declare -x name=value export name=value ~~~ ### 显示环境变量 export env printenv ## 局部变量 生效范围 当前进程的**函数片段**中 ## 位置变量 显示命令行中传入的 **位置参数** ## 特殊变量 ~~~ $$ Shell本身的PID $0 脚本文件名 $? 命令返回状态码 $# 位置参数的个数 $* 所有参数列表,调用时将所有参数当成一个字符串 $@ 所有参数列表,调用时将所有参数当成多个独立的字符串 $- 使用Set命令设定的Flag一览 $HOME 表示当前用户根目录 $IFS 表示内部的字段分隔符 $LANG 当前locale默认名称 $PATH 环境变量 $PPID 父进程编号 $PWD 当前工作目录 ~~~ ## 只读变量 常量 ~~~ readonly name declare -r name ~~~ ## bash的配置文件 ### 按作用范围 全局配置 /etc/profile,/etc/profile.d/*,/etc/bashrc 个人配置 ~/.bash_profile,~/.bashrc ## 按功能 ### profile类 为交互式登录式shell提供配置 设定环境变量,个人变量和环境变量同时存在,个人变量生效。作用范围越小,越生效。 运行命令或脚本,登录欢迎信息。 ### bashrc类 为非登录式shell提供配置 设定本地变量 定义命令别名 >[warning] **登录式shell** 通过终端输入账号密码登录 通过 “su - UserName" 或者 "su -l UserName"登录 **非登录式shell** 通过 “su - UserName" 切换 执行脚本 图形界面下打开的伪终端 /etc/profile 系统相关的环境变量,对所有用户生效 /etc/profile.d/下新建path.sh和alias.sh /etc/bashrc 定义针对这个用户的别名,如果对所有用户生效最好是/etc/profile.d/下新建alias.sh /etc/profile 和/etc/bashrc都有umask,要想修改,只要在/etc/profile.d/下新建umask.sh .bash_logout 定义用户退出时要执行的程序 ## 如何读取配置文件? ### 登录式shell ~~~ /etc/profile→/etc/profile.d/*→~/.bash_profile→~/.bashrc→/etc/bashrc ~~~ ### 非登陆录式shell ~~~ ~/.bashrc→/etc/bashrc→/etc/profile.d/*.sh ~~~ ## bash测试 bash -n 脚本:测试是否有语法错误 bash -nv 脚本:调试 bash -x 脚本:单步调试 ## 程序状态返回码$?的参考值 在shell中使用exit进行定义 ~~~ 0 成功退出 >0 退出失败 1-125 命令退出失败,失败返回的相关值由程序定义(譬如,程序内退出只执行 exit 2,则返回为2) 126 命令找到了,但无法执行 127 命令找不到 >128 命令因受到信号而死亡 ~~~ >[info] 系统自动执行脚本(非命令行启动脚本)需要自我定义环境变量;