wangdoc/bash-tutorial

variable.md 环境变量 vs 自定义变量(Shell变量)

eagleoflqj opened this issue · 2 comments

env或printenv输出的是环境变量,而BASHPID、BASHOPTS、PS1、PS2、RANDOM通常不属于环境变量,不会被printenv输出(其实UID也不会输出,但不知为何USER会),只能被set输出。
https://stackoverflow.com/questions/41931855/why-env-does-not-print-ps1-variable
https://askubuntu.com/questions/960551/why-arent-variables-like-ps1-in-printenv

IFS作为词间分隔符,默认为空格、\t和\n

set | grep 'IFS=' # 输出默认值$' \t\n'
s=$'a\tb'
for x in $s; do echo $x; done # 输出两行
IFS=' '
for x in $s; do echo $x; done # 只输出一行,因为此时分隔符为空格only

这里不区分环境变量和系统变量,否则教程有点复杂。