在 WSL Bash shell 和 Windows 环境之间导航可能具有挑战性,因为 Windows 中的路径是这样的:
C:\Windows
而在 Bash 中则是:
/mnt/c/Windows
使用当前工作目录 (CWD) 启动 Windows 资源管理器不起作用:
start .
我应该输入什么命令?
答案1
现在你只需要写
#!/bin/bash
explorer.exe
在你的script.sh
文件里面,你可以用它运行
bash script.sh
尖端:
- 以 sudo 身份运行不起作用
- 回响完整http://address.com允许 ctrl+click
答案2
更新答案 4/25/2024
好吧,有一个更好的解决方案。它适用于所有文件系统。
尝试这个:
alias start='explorer.exe'
# or if explorer.exe is not on your $PATH
alias start='/path/to/explorer.exe'
对我有用!
非 Linuxroot
文件系统的旧答案 2017 年 11 月 21 日
发现了这个:https://stackoverflow.com/questions/44245721/launching-explorer-from-wsl
本质上:
alias start='cmd.exe /c start'
那么start .
也可以。
注意:它不会在仅限 Linux 的文件上启动资源管理器,但任何映射的 Windows 文件系统都可以运行。
答案3
默认情况下 /mnt/c/Windows 不在 bash 路径环境变量中,所以到目前为止最好的方法是:
/mnt/c/Windows/explorer.exe .
答案4
这是一个较老的问题,可能需要更新的答案,因为多年来 WSL 中的情况发生了很大变化。
Windows 目录默认位于路径中,因此要打开资源管理器,请转到当前目录, 您可以使用explorer.exe .
。
然而正如问题所说,使用这个可能会更具挑战性其他目录,因为路径格式不同。如果你想使用特定路径启动 Explorer,你需要提供视窗路径并确保反斜杠被正确引用。
为了解决这个问题,WSL 现在包含一个内置命令来在 Linux 和 Windows 路径格式之间进行转换 - wslpath
。这允许您使用 Linux 路径启动资源管理器,这意味着您可以使用制表符完成路径等。
为了方便起见,您可以根据您的 shell 设置函数或别名。最初的问题是在 WSL 仅直接支持 Bash shell 时编写的,但现在我们有 (很多) 更多选项:
重击:
explorer () { /mnt/c/Windows/explorer.exe $(wslpath -w "$1") }
将该功能放置在启动中(或根据需要将其更改为路径中的脚本)
鱼:
function explorer --description 'Launch Windows Explorer in the specified directory' /mnt/c/Windows/explorer.exe $(wslpath -w "$argv[1]") return 0 end
将其放入
~/.config/fish/functions/explorer.fish
(或等效物)以便根据需要进行延迟加载。简体中文:
export def explorer [ path ] { let _ = /mnt/c/Windows/explorer.exe (wslpath -w $"($path | path expand)") }
注意:虽然这看起来可能有点复杂,但可以创建一个更简单的版本。
help
由于 Nushell 是我当前的 shell,所以我选择创建一个内置完全支持的自定义命令。您可以将其直接添加到您的配置中
config.nu
或创建一个~/.config/nushell/scripts/modExplorer.nu
并将use
其作为模块添加到您的配置中或在需要时使用。help
注意:如果需要,完整版本提供支持:# Launch Windows Explorer in the specified directory export def explorer [ path: string # The Linux path to launch ]: nothing -> nothing { let _ = /mnt/c/Windows/explorer.exe (wslpath -w $"($path | path expand)") }
笔记:
在 Fish 和 Nushell 中,即使命令有效,Explorer 似乎也会返回退出代码 1。我选择在 Fish 和 Nushell 函数中忽略该代码,以防止下一个提示显示错误指示。
使用带有和空格的 Linux 路径
~
以及映射到 Windows 驱动器的 Linux 路径(例如)进行测试/mnt/c
。