在父 shell 中显示子 shell 的颜色

在父 shell 中显示子 shell 的颜色

我解决过一​​次,但我不记得我是怎么做的!

在我的子进程中,我有这个:

echo -e "some control chars"

在我的父进程中,它将显示纯字符串,没有任何终端样式。是否有某种方法可以解释来自父进程中子进程的 stdout/stderr 的控制字符?

具体来说,我在父级中有这个 bash 函数:

ql_cyan='\033[1;36m'
ql_no_color='\033[0m'

function ql_log_colors {
    echo "sourcing quicklock.sh"
    echo -e "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
    echo "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
}

export -f ql_log_colors

如果我ql_log_colors在当前的 shell 中运行,我会得到颜色!

但是,如果我ql_log_colors从子 shell 调用,则父 shell 中不会显示任何颜色,只会显示纯字符串“采购 Quicklock.sh”。

如您所见,我尝试了 echo 命令的 3 种变体,如果从子级调用 echo 语句,则所有变体都仅在父级中输出纯文本。

相关内容