有没有办法打印 shell 内置“source”在获取脚本时调用的命令?

有没有办法打印 shell 内置“source”在获取脚本时调用的命令?

sh、bash 等都有一个-x标志,可以显示脚本中正在执行的每个命令。这对于调试来说很方便。

$ sh -x my_script.sh

+ case $SOMETHING_DIR in
+ unset SOMETHING_SCRIPT_SOURCE
+ something_process_parameters
+ local SOMETHING_AUTO_MODE
+ SOMETHING_AUTO_MODE=use
+ something_supports_source_options
++ something_echo '[ $# -gt 0 ] && something_echo $1'
++ command printf '%s\n' '[ $# -gt 0 ] && something_echo $1'
++ . /dev/stdin yes

有没有办法做到这一点source

$ source my_source.sh

答案1

是的,您可以在获取点脚本之前使用set -x(或) 在当前 shell 中启用跟踪,然后使用(或) 禁用跟踪。set -o xtraceset +xset +o xtrace

set -x
source ./my_source.sh
set +x

请注意,如果您源脚本设置或取消设置xtraceshell 选项,您可能无法获得预期的输出。

相关内容