Використання set -xв оболонці.
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Використання set -xчерзі на xtraceопції оболонки ( set +xвимикає) і повинні працювати у всіх Bourne-подібних оболонок, як bash, dash ksh93, pdkshі zsh. Це спонукає оболонку до відображення команди, яка виконується після виконання псевдонімів розширень та змінних розширень тощо.
Вихід буде в стандартному потоці помилок оболонки (як і у звичайному запиті), тому він не буде перешкоджати перенаправленням стандартного виводу, і йому передуватиме запит, визначений PS4змінною оболонки ( +␣за замовчуванням).
Приклад з кількома функціями:
$ world () { echo "world"; }
$ hello () { echo "hello"; }
$ helloworld () { printf '%s %s!\n' "$(hello)" "$(world)"; }
$ helloworld
hello world!
$ set -x
$ helloworld
+ helloworld
++ hello
++ echo hello
++ world
++ echo world
+ printf '%s %s!\n' hello world
hello world!
Я працюю з set -xусіма своїми інтерактивними оболонками за замовчуванням. Приємно бачити, що насправді виконується ... але я помітив, що програмоване заповнення вкладок тощо може спричинити небажаний вихід слідів у деяких оболонках.
$@частина вашого псевдоніма? Пам'ятайте, що псевдоніми насправді не підтримують аргументи, які розширяться до позиційних параметрів (якщо такі є) контексту, що викликає псевдонім. Звичайний спосіб запускуsomealias some argsпрацює лише шляхом розширення псевдоніму та залишення аргументів для його виконання. Якщо ви дійсно хочете мати можливість отримати доступ до аргументів, використовуйте функцію та"$@"