如何配置.bashrc实现打开程序后自动关闭终端窗口?
问题:终端执行文件打开命令后自动关闭窗口
需求背景
刚把系统换成Linux Mint,用i3窗口管理器。平时在终端用xdg-open打开.pdf、.txt这类文件,也能直接用open 文件名.后缀调用默认应用。现在想配置.bashrc,让执行这类命令后终端窗口自动关闭,不用保留两个窗口。
知道可以用rofi(替代dmenu)打开应用,但大部分时间都在终端操作,就想直接输入open math_hw.pdf后,终端被PDF阅读器替换掉,不想走GUI那套繁琐流程。之前没写过脚本,搜了好几个小时没解决,求脚本编写建议。
已尝试的函数
试过以下两个函数,执行source ~/.bashrc没报错,但问题依旧:
xopen() { xdg-open "$@" && exit; }
以及
function op() { xdg-open $1 > /dev/null 2>&1 & disown }
解决方案
核心函数配置
把下面的函数加到~/.bashrc末尾,就能实现执行open命令后终端自动关闭:
open() { xdg-open "$@" > /dev/null 2>&1 & exit }
关键细节说明:
"$@"能正确处理带空格的文件名(比如"My Homework.pdf"),避免文件名被拆分> /dev/null 2>&1把命令的标准输出和错误输出都重定向到空设备,防止终端残留无关信息&让xdg-open在后台运行,这样终端不用等待应用启动完成就能执行退出命令exit直接关闭当前终端窗口,达到“终端被应用替换”的效果
配置生效步骤
- 编辑
~/.bashrc文件,把上面的函数粘贴到文件末尾 - 执行以下命令让配置立即生效:
source ~/.bashrc
之后输入open 目标文件名,终端就会自动关闭,同时文件会用默认应用正常打开。
补充说明
- 如果之前已经有
open命令的别名或函数,需要先删除旧的配置,避免冲突 - i3窗口管理器会自动把焦点切换到新打开的应用窗口,无需额外配置
内容的提问来源于stack exchange,提问作者B Karr
相关产品推荐
相关产品推荐

