我正在整理我的 bash 导出文件,并根据变量所属的环境对变量进行分类。
例如HISTIGNORE
,PATH
、PS1
、 等...位于“Bash 部分”和MANPAGER
“Man 部分”上。
我只是想知道 $EDITOR 和/或 $VISUAL 怎么样?我似乎无法在 bash 手册页上找到它们。
答案1
你分类错误PATH
了,两者EDITOR
都VISUAL
属于它。
这些变量的想法属于对于特定的应用程序是错误的。它们是标准化的并且可供潜在的使用任何需要它们的应用程序。
- 如果任何应用程序想要搜索可执行程序的路径,它可以使用
PATH
. (事实上,任何调用 的应用程序都是这种情况execvp()
。) - 如果任何应用程序想要调用一个shell,它可以用来
SHELL
查找程序映像文件。 - 如果任何应用程序想要调用行编辑器,它可以使用
EDITOR
. - 如果任何应用程序想要调用可视化编辑器,它可以使用
VISUAL
. - 如果任何应用程序想要调用寻呼机,它可以使用
PAGER
. - 如果任何应用程序想要知道主目录在哪里,它可以使用
HOME
.
等等。
相比之下,HISTIGNORE
andPS1
甚至根本不需要环境变量;标准中甚至只提到了后者(尽管没有解释)。一能在会话领导进程或其他顶级父进程中将它们设置为环境变量,并依靠环境继承来让 shell 导入它们。
但一个人可以反而只需将它们设置为壳变量,在每个 shell 自动执行的脚本中(具体取决于 shell),而不是将它们导出到环境中。例如:我有我的~/.zshrc
集合PS1
和RPROMPT
壳变量,它们是不是导出为环境变量。
进一步阅读
- “其他环境变量”。 基本定义。单一 UNIX 规范。 IEEE 1003.1。 2018。公开组。
execvp()
。 系统接口。单一 UNIX 规范。 IEEE 1003.1。 2018。公开组。- VISUAL 与 EDITOR – 有什么区别?
- bash 中的“editor”命令是什么?
- 默认终端内文本编辑器的命令
- 哪些系统有“寻呼机”快捷方式/别名?
- 如何在不安装 Nano 的情况下摆脱“未找到 Nano”警告?
- 乔纳森·德博因·波拉德 (2020)。Unix 编辑器和寻呼机。经常给出的答案。
答案2
man bash
提到了以下两个变量edit-and-execute-command
:
在当前命令行上调用编辑器,并将结果作为 shell 命令执行。 Bash 尝试按顺序调用
$VISUAL
、$EDITOR
、 和作为编辑器。emacs
其他程序也经常使用这些变量。