简单的问题。我想知道如何判断当前 shell 是否作为子 shell 运行mc
。如果是,我想进入一个没有某些功能mc
无法处理的降级模式。
特别是,我希望这样
- 尽可能便携
- 不依赖 shell 之外的任何东西和基本的通用外部命令。
尽管手册页中没有记录,但一个快速实验表明它mc
设置了两个环境变量:$MC_TMPDIR
和$MC_SID
. (它也设置了$HISTCONTROL
,但这并不特定于mc
;它会影响 bash 的行为,并且可能是由 . 以外的其他东西设置的mc
。)
如果您不想依赖未记录的功能,您始终可以自己设置环境变量。例如,在 bash 中:
mc() { MC_IS_RUNNING=1 command mc "$@" ; }
进入“降级模式”是另一回事;我不确定你会怎么做。我不知道 bash 有什么方法可以禁用指定的功能。您可以通过定义覆盖它们的函数来禁用选定的内置命令。你心目中的特点是什么?