用户自定义变量
在Bash中,用户自定义变量与其它变量的区别在于其只在当前Bash shell中有效,并且默认是本地变量。以下是与用户自定义变量相关的关键字:
变量定义:使用赋值运算符“=”来定义变量。例如,my_var="hello" 将定义一个名为my_var的变量,并将其值设置为hello。
变量引用:使用$符号来引用变量的值。例如,echo $my_var 将输出my_var变量的值。
变量赋值:可以使用赋值运算符“=”来修改变量的值。例如,my_var="world" 将把my_var变量的值修改为world。
变量删除:使用unset命令来删除变量。例如,unset my_var 将删除名为my_var的变量。
变量类型:Bash中的变量默认都是字符串类型,但是可以通过类型转换函数将其转换为其他类型。例如,使用declare命令可以定义整数变量,使用declare -a命令可以定义数组变量等。
变量作用域:用户自定义变量默认都是本地变量,只在当前Bash shell中有效。如果想让变量在当前Bash shell及其所有子进程中都有效,可以使用export命令将其导出为环境变量。
需要注意的是,Bash中还有一些特殊变量,如$0、$1、$2等,它们用于保存脚本的名称和参数等信息,不同于用户自定义变量。
环境变量
Bash中的环境变量是可以被整个操作系统和所有进程访问的变量。
Bash中预定义了很多环境变量,以下是一些常见的环境变量:
PATH:用于指定Shell查找可执行文件的路径列表。
HOME:指定当前用户的主目录路径。
USER:指定当前用户的用户名。
LOGNAME:指定当前用户的登录名。
SHELL:指定当前Shell的路径。
PS1:用于控制Shell命令提示符的显示方式。
LANG:指定系统的默认语言。
LC_ALL:用于覆盖LANG环境变量,指定系统的默认语言和区域设置。
PWD:指定当前工作目录的路径。
TERM:指定当前终端的类型。
DISPLAY:指定X服务器的显示地址。
EDITOR:指定系统默认的文本编辑器。
HOSTNAME:指定当前主机的名称。
HISTSIZE:指定Shell保存历史命令记录的最大条数。
可以使用printenv命令列出所有的环境变量。例如,以下命令将列出所有的环境变量:
printenv
可以使用echo命令来查看特定环境变量的值。例如,以下命令将输出PATH环境变量的值:
echo $PATH
预定义变量
Bash中有许多预定义变量,它们存储着一些特殊的值,用于方便Shell脚本的编写和运行。以下是一些常见的预定义变量:
$0:代表当前脚本的文件名。
$1、$2、$3...:代表脚本的参数,$1表示第一个参数,$2表示第二个参数,以此类推。
$#:代表脚本参数的数量。
$@:代表所有的脚本参数,每个参数用空格分隔开。
$?:代表上一个命令的退出状态码,0表示成功执行,其他值表示执行失败。
$$:代表当前进程的进程ID。
$USER:代表当前用户的用户名。
$HOME:代表当前用户的主目录路径。
$PWD:代表当前工作目录的路径。
$SHELL:代表当前Shell的路径。
$IFS:代表Shell的内部字段分隔符,通常是空格、制表符和换行符。
这些预定义变量在Shell脚本中非常有用,可以通过引用它们的值来帮助脚本执行特定的操作。例如,可以使用$0来获取脚本的名称,使用$1来获取用户传递的第一个参数,使用$?来判断上一个命令是否执行成功等。
需要注意的是,这些变量的值通常是只读的,不能被修改。如果要修改这些变量的值,可以使用特殊的Shell命令和语法。例如,可以使用shift命令来移动脚本参数的位置,从而修改2等参数变量的值。