bash設定ファイルでエイリアスのコマンド置換を解決しましたか? [コピー]

bash設定ファイルでエイリアスのコマンド置換を解決しましたか? [コピー]

私のMacアドレスをランダムに変更するためにエイリアスを作成したいと思います。

alias chrandmac="sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')"

ただし、コマンドの代替部分は構成ファイルの実行時に解決されました。

alias chrandmac='sudo ifconfig en0 ether 83:3a:bf:fc:4e:29'

なぜこれが起こるのかというアイデアはありますか?

答え1

エイリアスの代わりに関数を使用したいです。エイリアスのように起動ファイルに入れることができます。

chrandmac() {
    sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')
}

エイリアスと連携するには、単一引用符を使用してコマンド置換の拡張を防ぐ必要があります。

alias chrandmac='sudo ifconfig en0 ether $(openssl rand -hex 6 | sed '\''s/\(..\)/\1:/g; s/.$//'\'')'

関連情報