Bash" time " встроенный в строку не выполняется

$ cmd='time sleep 2'
$ $cmd
bash: time: command not found

что здесь происходит? Это не вопрос сборки оболочки не работает, потому что это работает:

$ cmd2='echo wef'
$ $cmd2
wef

какие идеи?

Edit: я нашел разницу:

$ type time
time is a shell keyword

Vs:

$ type echo
echo is a shell builtin

Итак, теперь вопрос - почему builtin работает в строке, а ключевое слово-нет?

1
задан ACK_stoverflow
02.05.2023 16:13 Количество просмотров материала 3571
Распечатать страницу

2 ответа

time Как GNU Bash ключевое слово имеет очень конкретное место, где принимается, см., например, синтаксис для конструкции конвейера команд:

формат конвейера [time [-p]] [!] command1 [| command2 ...]

это вовсе жестко позиции сайта вне экспансии (как commandN будет там, где расширяются параметры и переменные). Фактически также семантика применяется ко всему конвейеру, а не к command, поэтому, вероятно, поэтому это должно быть ключевое слово.

есть оболочка встроенная times (в POSIX a специальный встроенный), для этого расширение работает, так как первое слово может быть исполняемым или встроенным в оболочку.

как вариант GNU coreutils содержит /bin/time исполняемый файл.

в самом деле time нет зарезервированное слово in POSIX Shell (хотя bash распознает это в posix mode во всяком случае (если - следует по неочевидным причинам)).

внутри eval ключевые слова выражения распознаются bash, так что это может быть использовано для динамического усиления команды с профилированием время. (Однако, с другой стороны, это требует дополнительного раунда цитирования)

2
отвечен eckes 2023-05-04 00:01

вместо того, чтобы использовать команду cmd='время сна 2' пытаются использовать его как команду cmd='/usr/Бен/время сна 2', чтобы получить команду в реальном времени.

вы можете прочитать следующее В man time:

пользователи оболочки bash должны использовать явный путь для запуска команда внешнего времени, а не вариант оболочки. По системе где время установлено в /usr / bin, первым примером будет /usr/Бен/время туалет /и т. д./хосты

0
отвечен Genaro Morales 2023-05-04 02:18

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх