使用enable内置命令,我们可以禁用 shell 内置命令,例如echo,如下所示:
enable -n echo
Run Code Online (Sandbox Code Playgroud)
但是我们如何禁用 shell 关键字,例如time?如果我们尝试:
enable -n time
Run Code Online (Sandbox Code Playgroud)
我们将得到以下“答案”:
bash: enable: time: not a shell builtin
Run Code Online (Sandbox Code Playgroud)
注意:我知道如何运行里面的time那个/usr/bin,所以我只想知道是否有可能完成我在标题中提出的要求。
你可以做:
alias time='"time" '
Run Code Online (Sandbox Code Playgroud)
(作为奖励,尾随空格允许在它之后进行别名扩展)。
引用一个关键字(关键字是 shell 语言语法的一部分)会阻止它被解释为一个关键字,所以在这里,对其执行正常的命令查找。
它适用于bash, zsh, mksh, 但不适用于ksh93,ash或yash。
请注意,对于非交互式bash实例(如在脚本中),shopt -s expand_aliases与其他 shell 不同,您需要bash在非交互式时默认不扩展别名。
kon*_*box -2
您无法禁用它,但可以使用函数隐藏它。使用风险自负。
shell_builtin() {
: ## Do nothing.
}
Run Code Online (Sandbox Code Playgroud)
要重新启用它,只需取消设置即可:
unset shell_builtin
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5311 次 |
| 最近记录: |