Bash コマンド :(){ :|:& };: でプロセスを生成してカーネルを終了させるコードを見ました。構文を説明できますか?次のように
user@host$ :(){ :|:& };:
ここでは、関数名の識別子としてコロンが使用されています。コロンを識別子として使用できますか?
Bash コマンド :(){ :|:& };: でプロセスを生成してカーネルを終了させるコードを見ました。構文を説明できますか?次のように
user@host$ :(){ :|:& };:
ここでは、関数名の識別子としてコロンが使用されています。コロンを識別子として使用できますか?
ドキュメントによると:
名前
文字、数字、およびアンダースコアのみで構成され、文字またはアンダースコアで始まる単語。名前は、シェル変数および関数名として使用されます。識別子とも呼ばれます。
いいえ、コロンは関数名では無効です。そのため、爆弾が bash で機能しないか、ドキュメントが失敗しています。
コロンが組み込みの operatorを参照している可能性があるとすぐに考えましたが、それがどのようにして期待されるセマンティクスを取得できるのかわかりません。
はい、できます。
$ :()
> {
> echo "hello from : :)"
> }
$ :
hello from : :)