Bash

在 bash 配置文件中解決了別名中的命令替換?

  • March 30, 2013

我想為隨機更改我的 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/.$//'\'')'

引用自:https://unix.stackexchange.com/questions/70642