Я визначив функцію оболонки (назвемо її так clock
), яку я хочу використовувати як обгортку для іншої команди, подібної до time
функції, наприклад clock ls -R
.
Моя функція оболонки виконує деякі завдання, а потім закінчується exec "$@"
.
Я хотів би, щоб ця функція працювала навіть із вбудованими оболонками, наприклад, clock time ls -R
повинна виводити результат time
вбудованого, а не /usr/bin/time
виконуваного файлу. Але exec
завжди замість цього виконується команда.
Як змусити функцію Bash працювати як обгортку, яка також приймає вбудовані оболонки як аргументи?
Редагувати : Я щойно дізнався, що time
це не вбудований Bash, а спеціальне зарезервоване слово, пов’язане з трубопроводами. Мені все ж цікаво рішення для вбудованих модулів, навіть якщо воно не працює time
, але більш загальне рішення було б ще краще.
exec bash -c \' "$@" \'
. Якщо ваша команда в першому параметрі не буде розпізнана як сценарій оболонки, вона буде інтерпретуватися як двійковий, який безпосередньо запускається. Крім того, і простіше, просто пропустітьexec
та зателефонуйте"@"
зі своєї оригінальної оболонки.