导出变量路径中的转义空格 (Ubuntu 22.04.1 LTS)

导出变量路径中的转义空格 (Ubuntu 22.04.1 LTS)

我使用 WSL2 (Ubuntu 22.04.1 LTS),需要引用 Edge-browser 来获取 xdg-open。由于路径中的空格,我收到错误。我怎样才能逃离这个空间?路径在导出的变量 BROWSER 中正确显示。

oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ xdg-open https://stackoverflow.com/questions/24683221
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
xdg-open: no method available for opening 'https://stackoverflow.com/questions/24683221'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export BROWSER='/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ xdg-open https://stackoverflow.com/questions/24683221
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
/usr/bin/xdg-open: 882: /mnt/c/Program: not found
xdg-open: no method available for opening 'https://stackoverflow.com/questions/24683221'
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ $BROWSER
-bash: /mnt/c/Program: No such file or directory
oliverk@KPW00WP3Q:/mnt/c/Users/E547766/Documents$ export
declare -x BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"

答案1

您还可以使用旧式 Windows 路径 ~1

export BROWSER=/mnt/c/Progra~1/Google/Chrome/Application/chrome.exe

答案2

$ export BROWSER="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
$ xdg-open https://stackoverflow.com/questions/24683221
/usr/bin/xdg-open: 882: /mnt/c/Program: not found

该错误消息很大程度上暗示了分词的实际情况。

就是这样。xdg-open一个 shell 脚本它将被视为$BROWSER要尝试的以冒号分隔的浏览器列表(类似于$PATH工作原理),并且对于每个浏览器,它都会尝试运行

$browser "$url"

$browser未引用的。这意味着它会在空格(*)上被分割,并且您对此无能为力。其缺点是带有空格的路径不起作用,并且带有全局字符的路径可能会出现问题。好处是您可以使用它来传递参数(前提是这些参数不需要嵌入空格等)。

(* 这是脚本似乎使用的 default ,除非它从脚本外部获取修改后的值,并且使用忽略在脚本开始时IFS重置的 shell 运行。)IFS

最简单的解决方法可能是创建一个路径中没有空格的符号链接,将其指向浏览器并将符号链接的路径添加到$BROWSER.

相关内容