Используйте 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работает, просто расширяя псевдоним и оставляя аргументы для него. Если вы действительно хотите получить доступ к аргументам, используйте функцию и процитируйте"$@"