set -xKabukta kullanın .
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Kullanımı set -xile ilgili dönüşleri xtracekabuk seçeneği ( set +xkapanır) ve çalışmalıdır tüm Bourne benzeri kabukları gibi bash, dash ksh93, pdkshve zsh. Bu, kabuktan takma genişletmeler ve değişken genişletmeler vb. Gerçekleştirildikten sonra yürütülen komutu görüntülemesini ister.
Çıktı, kabuğun standart hata akışında olacaktır (tıpkı sıradan istem gibi), bu nedenle standart çıkışın yeniden yönlendirmelerine müdahale etmez ve öncesinde PS4kabuk değişkeni tarafından tanımlanan bir istem ( +␣varsayılan olarak) olur.
Birkaç işlev içeren örnek:
$ 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 -xVarsayılan olarak tüm etkileşimli kabuklarımda koşuyorum . Gerçekte ne yürütüldüğünü görmek güzel ... ama programlanabilir sekme tamamlama vb. Bazı kabuklarda istenmeyen iz çıktısına neden olabilir.
$@takma adın bir parçası mı ? Takma adların, takma adı çağıran bağlamın konum parametrelerine (varsa) genişleyecek bağımsız değişkenleri gerçekten desteklemediğini unutmayın. Olağan çalışma şeklisomealias some args, takma adı genişleterek ve argümanları takip etmek için bırakarak çalışır. Eğer gerçekten argümanlara erişmek istiyorsanız, bir fonksiyon kullanın ve"$@"