包含别名的变量未被正确扩展
Variable containing alias not being expanded correctly
我正在尝试在 Windows 10 月 11 日在 WSL2 Debian 环境中自动化 minikube start
进程。
我已经在 .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
(编辑了标题,以便将来更容易找到;当时还不清楚到底是什么问题。)
将命令放在变量中基本上总是一个坏主意,不仅因为它会干扰别名扩展(基本上,别名在变量扩展发生之前被解析)。参见例如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 "$@"; }
("$@"
仅在您希望能够添加命令行参数时才有用。)
我正在尝试在 Windows 10 月 11 日在 WSL2 Debian 环境中自动化 minikube start
进程。
我已经在 .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
(编辑了标题,以便将来更容易找到;当时还不清楚到底是什么问题。)
将命令放在变量中基本上总是一个坏主意,不仅因为它会干扰别名扩展(基本上,别名在变量扩展发生之前被解析)。参见例如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 "$@"; }
("$@"
仅在您希望能够添加命令行参数时才有用。)