![用于扩展字标识符的 PS 变量](https://linux22.com/image/740885/%E7%94%A8%E4%BA%8E%E6%89%A9%E5%B1%95%E5%AD%97%E6%A0%87%E8%AF%86%E7%AC%A6%E7%9A%84%20PS%20%E5%8F%98%E9%87%8F.png)
是否存在未记录的 PS 变量(如 PS2),当 bash 将字指示符替换为其实际值时会显示该变量?我认为这有助于明确命令的结束位置和执行的开始位置。
例如:我运行 ls 和 cat。cat 使用前一个命令的最后一个参数和一个单词指示符。bash!$
在新行中将单词指示符替换为实际值,然后输出以下命令:
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
cat .bash_profile
# .bash_profile
# Get the aliases and functions
[...]
为了更清楚起见,我要求的是一个在替换之前插入文本的变量,例如
> export MISSING_VARIABLE='--->'
> ll .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 176 Dec 22 2015 .bash_profile
> cat !$
--->cat .bash_profile
[...]
答案1
你可以通过设置让 bash 在执行每个扩展命令之前向你显示它
shopt -s histverify
或者你可以使用 readline 函数shell-expand-line
,我认为默认情况下它会Meta Control E扩展你到目前为止输入的内容。手册页说
这将执行别名和历史扩展以及所有 shell 字扩展。