在尝试编写bash脚本时,我在尝试执行它时遇到了一个奇怪的问题。我想回显$PROMPT_COMMAND变量,因此,我有下面的bash脚本
#!/bin/bash
echo $PROMPT_COMMAND
执行这个脚本不会产生任何反响。为什么?当我执行时,它没有意义
echo$PROMPT_COMMAND
从命令提示符中,我获得存储在prompt_command 中的内容
所以。。。我做错了什么,缺少了什么?
关于环境的一件事:在ubuntu 20 上尝试过
问题是基于您如何执行脚本以及脚本使用的环境。
使文件可执行后,有两种运行方式:
./script.sh
. script.sh
第一种方法是在一个新的bash子shell中执行它,它不能访问$PROMPT_COMMAND
变量,因为根据定义,它是新的。
第二种方法是在当前shell的上下文中执行脚本。这意味着它可以访问$PROMPT_COMMAND
变量。这是正确的做法。每当您需要处理提示时,都需要以这种方式执行它。
注意:#2与运行
source script.sh
相同。它也是称为";采购";你的剧本。以防万一你碰到这些术语,你就会知道它们的意思。