Використання 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
працює лише шляхом розширення псевдоніму та залишення аргументів для його виконання. Якщо ви дійсно хочете мати можливість отримати доступ до аргументів, використовуйте функцію та"$@"