我在Windows上使用Ubuntu上的Bash,在Windows 10上运行bash的方法。我安装了Creators更新,Ubuntu版本是16.04。
我最近玩的是npm,node.js和Docker,对于docker,我发现可以安装它并在windows中运行它,只需从bash使用客户端部分,直接调用docker.exe文件Windows的Program Files文件夹。我只是更新我的路径变量,将docker的路径包含为PATH=$PATH:~/mnt/e/Program\ Files/Docker/
(放入.bashrc),然后我就可以从bash调用docker.exe
运行docker。
但是嘿,这个bash,我不想在命令(程序)结束时写.exe。我可以简单地添加一个别名alias docker="docker.exe"
,但后来我想使用let say docker-compose,我必须添加另一个。我正在考虑向.bashrc添加一个脚本,它将遍历路径变量并在路径变量中指定的每个路径中搜索.exe文件,并为每次出现添加一个别名,但它似乎不是一个非常干净的解决方案(但我想这很有用。)
是否有一个简单而干净的解决方案来实现这一目标?
答案 0 :(得分:0)
您应该能够简单地将可执行目录设置为PATH。使用导出来保留。
命令: 导出PATH = $ PATH:/ path / to /目录/可执行文件/位于/位于
答案 1 :(得分:0)
尝试使用Docker for Windows from WSL时,我遇到了同样的问题。
有许多现有的Shell脚本,它们可以在Linux上很好地运行,并且大多数情况下也可以在WSL下运行,直到由于.editor1 {
position: absolute;
top: 0;
width: 50%;
bottom: 0;
left: 0;
}
.editor2 {
position: absolute;
top: 0;
width: 50%;
bottom: 0;
left: 50%;
}
而失败。将各处的docker: command not found
更改为docker
会很麻烦且不可移植。
尝试将docker.exe
中的aliases设置为here的变通办法:
~/.bashrc
但是它要求每个脚本都可以在interactive mode中运行,并且仍然可以在doesn't work within backticks中运行,而无需修改脚本。
然后在shopt -s expand_aliases
alias docker=docker.exe
alias docker-compose=docker-compose.exe
中尝试exported bash functions:
~/.bashrc
这有效。但是添加每个所需的exe仍然很繁琐。
最后得到了更简单的symlinks方法和经过修改的wslshim自定义帮助脚本。
只需将一次添加到docker() { docker.exe "$@"; }
export -f docker
docker-compose() { docker-compose.exe "$@"; }
export -f docker-compose
:
~/.local/bin/wslshim
使其可执行:#!/bin/bash -x
cd ~/.local/bin && ln -s "`which $1.exe`" "$1" || ln -s "`which $1.ps1`" "$1" || ln -s "`which $1.cmd`" "$1" || ln -s "`which $1.bat`" "$1"
然后添加任何“别名”变得像键入两个单词一样容易:
chmod +x ~/.local/bin/wslshim
脚本会自动将absolute path拾取到$ PATH中的任何Windows可执行文件,并将其符号链接而没有扩展到~/.local/bin
中,{{3}}也位于WSL的$ PATH中。
可以根据需要轻松扩展此方法,以自动链接给定目录中的任何exe。但是将整个$ PATH链接起来将是一个过大的杀伤力。 )
答案 2 :(得分:0)
在Windows 10中,解决方案是为Windows安装git-bash和docker。
在此重击中,当我按“ docker”时 例如“ docker ps” 我不需要创建别名或更改路径。
您可以从https://git-scm.com/download/win下载git-bash
然后从“开始”按钮中搜索“ git bash”。 希望此解决方案对您有好处