Вы можете использовать command
встроенную оболочку, чтобы обойти обычный процесс поиска и выполнить данную команду как внешнюю команду независимо от любых других возможностей (встроенные функции оболочки, псевдонимы и т. Д.). Это часто делается в сценариях, которые должны быть переносимы между системами, хотя, вероятно, чаще используют сокращение \
(например, \rm
вместо command rm
или rm
, так как последнее может быть связано с чем-то, что не известно как rm -i
).
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
$
Это можно использовать с псевдонимом, например так:
$ alias time='command time'
$ time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
$
Преимущество этого перед, например, в alias time=/usr/bin/time
том, что вы не указываете полный путь к time
двоичному файлу , а вместо этого возвращаетесь к обычному механизму поиска пути.
Сама alias
команда может входить, например, в ~ / .bashrc или /etc/bash.bashrc (последняя является глобальной для всех пользователей системы).
В противоположном случае (принудительное использование встроенной оболочки в случае, если определен псевдоним), вы должны использовать что-то вроде этого builtin time
, что снова отменяет обычный процесс поиска и запускает встроенную именованную оболочку. На странице руководства bash упоминается, что это часто используется для обеспечения пользовательских cd
функций с помощью названной функции cd
, которая, в свою очередь, использует встроенную функцию cd
для реальной работы.
type -a <cmd>
.