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
、エイリアスを展開し、それに続く引数を残すだけで機能します。引数に実際にアクセスできるようにしたい場合は、関数を使用して、引用符で"$@"