Ubuntu 20.04下替代macOS open命令实现Boundary带参数链接打开的方案问询
Ubuntu 20.04下替代macOS open命令实现Boundary带参数链接打开的方案问询
嗨,我来帮你搞定这个问题!你现在在Ubuntu 20.04上用Boundary工具,原来macOS里的open命令在Ubuntu上没有,用xdg-open又没法传递额外参数,导致你的brmq函数没法正常工作,对吧?结合你给出的完整函数,我给你几个可行的解决方案:
方案一:直接调用默认浏览器命令
xdg-open的问题在于它是一个通用的打开工具封装,会忽略浏览器相关的额外参数。那我们可以跳过它,直接调用你系统里的默认浏览器命令,比如Chrome是google-chrome,Firefox是firefox。修改后的函数如下:function brmq() { export BOUNDARY_TOKEN=$(authenticate) boundary connect -exec google-chrome -target-id $1 -- http://{{boundary.addr}} --token env://BOUNDARY_TOKEN }这样直接调用浏览器命令就能正常传递
--token这类参数了,Boundary的连接逻辑也能正常执行。如果你的默认浏览器是Firefox,把google-chrome换成firefox就行。方案二:自制一个模拟macOS open的替代脚本
如果你想尽量保持原来的函数结构,不想改open这个命令名,可以自己写一个简单的脚本替代它。- 新建一个名为
open的脚本,内容如下:#!/bin/bash # 模拟macOS open命令的简单替代脚本,支持传递参数给浏览器 if [[ $1 == "-W" ]]; then shift # 获取默认浏览器的命令名并调用,传递所有剩余参数 default_browser=$(xdg-settings get default-web-browser | sed 's/\.desktop$//') $default_browser "$@" else # 非浏览器相关的操作,直接用xdg-open处理 xdg-open "$@" fi - 给脚本添加执行权限:
chmod +x open - 把脚本放到
~/.local/bin目录下(这个目录默认在你的系统PATH里,不用额外配置)
之后你原来的brmq函数几乎不用修改,就能像在macOS上一样使用open命令了:
function brmq() { export BOUNDARY_TOKEN=$(authenticate) boundary connect -exec open -target-id $1 -- -W http://{{boundary.addr}} -token env://BOUNDARY_TOKEN }- 新建一个名为
小提醒
要确保Boundary的env://BOUNDARY_TOKEN参数能被浏览器正确识别,不过根据你说的Boundary其他命令都正常,这个参数的解析应该没问题,主要是解决命令传递参数的问题。
备注:内容来源于stack exchange,提问作者Darina
相关产品推荐
相关产品推荐

