我有这个脚本(script.sh
)
#!/bin/bash
res=$( set | egrep -o "BASH_[[:alnum:]]+" | sort | uniq )
printf "%s\n" $res
当我尝试./script.sh
时,输出为:
BASH_ALIASES
BASH_ARGC
BASH_ARGV
BASH_CMDS
BASH_LINENO
BASH_SOURCE
BASH_VERSINFO
BASH_VERSION
使用. script.sh
,输出为:
BASH_ALIASES
BASH_ARGC
BASH_ARGV
BASH_CMDS
BASH_COMPLETION
BASH_LINENO
BASH_REMATCH
BASH_SOURCE
BASH_VERSINFO
BASH_VERSION
为什么第一个结果不完整/更少?他们的执行有什么区别?我读到./script
启动了一个子Shell,但我不太了解在当前Shell和子Shell中运行之间的区别。