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'
關於為什麼會發生這種情況的任何想法?
您想使用函式而不是別名。它可以像別名一樣放在您的啟動文件中:
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/.$//'\'')'