【发布时间】:2018-09-14 21:44:32
【问题描述】:
更新:
我取得了进步,但我仍然不确定我不理解什么。我已将脚本缩减为一行,但仍然遇到同样的问题。
对以下内容有任何见解吗?
注意:如果我输入“/Users/Da.../Docker”,或者如下所示,使用退格作为空格,结果是相同的。
for myvm in $(find /Users/David/Documents/Virtual\ Machines/Docker -name *.vmx); do echo -e "VM name: $myvm"; done
VM name: /Users/David/Documents/Virtual
VM name: Machines/Docker/RHEL7-DockerHost-Node04.vmwarevm/RHEL7-DockerHost-Node04.vmx
...
VM name: /Users/David/Documents/Virtual
VM name: Machines/Docker/RHEL7-DockerHost.vmwarevm/RHEL7-DockerHost.vmx
VM name: /Users/David/Documents/Virtual
VM name: Machines/Docker/RHEL7-DockerHost-Node01.vmwarevm/RHEL7-DockerHost-Node01.vmx
我错过了什么?
--------------
我发现了类似的问题,但答案对我不起作用。
我正在编写一个脚本,允许我在 VMware Fusion 中启动和停止多个虚拟机,而无需使用vmrun 命令(位于"/Applications/VMware Fusion.app/Contents/Library/vmrun")单击每个虚拟机。
问题
当我尝试给 vmrun 起别名时:
alias myvmcli='/Applications/VMware\ Fusion.app/Contents/Library/vmrun'
...我从 bash 收到以下错误:
第 3 行:/Applications/VMware\:没有这样的文件或目录
讨论
显然缺少空格,但我认为使用退格字符表示应该使用空格。
我在别名行中尝试了单引号和双引号,但无济于事。
如果我从命令行运行alias,它工作正常。
解决方案/想法?
我确信创建链接可以解决我的问题,但我真的很想知道为什么这不起作用。
【问题讨论】:
-
Bash documentation 声明“对于几乎所有目的,shell 函数都优于别名。”这是一个 shell 函数,您可以添加到
.bashrc而不是您的别名。添加后,您应该执行souce ~/.bashrc以使其在命令行中可用myvmcli() { "/Applications/VMware Fusion.app/Contents/Library/vmrun" ; } -
@Inian:我同意你所说的关于别名的要点,但在这种情况下,只需要一个简单的变量赋值。
-
@cdarke:当然可以,但我绝不会鼓励初学者使用变量,所以这不是常规做法
-
@Inian:为什么不呢?请记住,这是我们正在讨论的脚本。
-
问题不在于您是否可以使用别名来做到这一点,而是为什么您不能使用功能来做到这一点。
mivmcli () { /Applications/VMware\ Fusion.app/Contents/Library/vmrun "$@"; }.