我正在嘗試minikube start在 Windows 10/11 上的 WSL2 Debian 環境中自動化行程。
我已經在里面設定了這個別名 .bash_aliases
$ type minikube
minikube is aliased to `"/mnt/c/minikube/minikube.exe"'
我在 WSL2 啟動時運行了這個腳本:
$ cat wsl_minikube_start.sh
shopt -s expand_aliases
alias_location="${HOME}/.bash_aliases"
source "${alias_location}"
ministart="minikube start"
${ministart}
shopt -u expand_aliases
我相信它應該以這種方式作業,但它顯示minikube找不到命令。
$ bash wsl_minikube_start.sh
wsl_minikube_start.sh: line 5: minikube: command not found
(標題經過編輯,以便將來更容易找到;當時還不清楚到底是什么問題。)
uj5u.com熱心網友回復:
將命令放在變數中基本上總是一個壞主意,不僅因為它會干擾別名擴展(基本上,別名在變數擴展發生之前被決議)。參見例如https://mywiki.wooledge.org/BashFAQ/050
別名基本上也總是一個壞主意。用函式替換您的別名。
minikube () { "/mnt/c/minikube/minikube.exe" "$@"; }
或者,基本上等效地,在您的內容中創建一個包裝腳本,PATH其內容基本相同。
#!/bin/sh
exec "/mnt/c/minikube/minikube.exe" "$@"
回到第一個話題,不清楚為什么要用minikube start變數封裝簡單的命令;但如果這真的有什么目的,你也想為此使用一個函式。
ministart () { minikube start "$@"; }
("$@"僅當您希望能夠添加命令列引數時才有用。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413741.html
標籤:
下一篇:fork()在這里做什么?
