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