如何让 bash 默认使用时间二进制文件 (/usr/bin/time) 而不是 shell 关键字?
which time返回/usr/bin/time
type time返回time is a shell keyword
运行time显然是在执行shell关键字:
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
Run Code Online (Sandbox Code Playgroud)
enable -n time 返回 bash: enable: time: not a shell builtin
我想根据我的需要自定义cd命令的功能。
我定义了以下功能 -
function cd () { cd "$@" && pushd "$@"; }
这个函数的目的是自动将目录压入堆栈,这样我就不用pushd .每次都手动输入了。
然而,上面的函数是一个无限递归函数,因为调用cd被解释为函数本身而不是cd内置函数。
如何引用cd此函数中的内置函数?
我知道别名可以使用\. 以更明确的方式转义函数或引用内置函数的方法是什么?
注意:我不想将我的函数重命名为其他任何名称。
Bash 参考手册说
使用 time 作为保留字允许对 shell 内置函数、shell 函数和管道进行计时。外部时间命令无法轻松地对这些进行计时。
但它只比较了保留字time和外部命令
time,并没有解决这个问题:
为什么 Bash 实现time为保留字,而不是内置命令?
这能带来什么好处?
还有哪些保留字也可以作为(内置或外部)命令实现?他们与指挥同行相比有什么优势?(试图弄清楚他们的优势是共享的还是特定于每个人的)
例如,
[[...]]与内置命令test或[select与内置命令read