配置在当前目录打开终端的键盘快捷键无效,寻求解决办法
配置在当前目录打开终端的键盘快捷键无效,寻求解决办法
嘿,我之前也踩过这个坑!问题出在快捷键触发脚本时的运行环境和你在终端里手动执行的环境完全不一样——你脚本里的$PWD会是快捷键启动时的默认目录(一般是你的用户主目录),而不是当前文件管理器打开的目录。给你几个实用的解决办法:
第一步:先检查快捷键的命令路径
你在系统设置里配置快捷键的时候,是不是只写了open_terminal_here.sh?快捷键的环境变量PATH通常不会包含你的个人脚本路径,所以一定要用绝对路径调用脚本,比如:
/home/你的用户名/open_terminal_here.sh
或者用~/指代主目录(部分桌面环境支持):
~/open_terminal_here.sh
第二步:修改脚本,主动获取当前文件管理器的目录
既然$PWD不靠谱,我们直接从当前活跃的文件管理器窗口里拿路径就行,下面分两种场景给你脚本:
场景1:用GNOME Nautilus(默认文件管理器)
这个方法不用额外装工具,直接用系统自带的gdbus接口:
#!/bin/zsh # 调用GNOME文件管理器的DBus接口,获取当前打开的目录 CURRENT_DIR=$(gdbus call --session --dest org.freedesktop.FileManager1 \ --object-path /org/freedesktop/FileManager1 \ --method org.freedesktop.FileManager1.GetCurrentDirectory 2>/dev/null | \ awk -F '"' '{print $2}') # 如果获取失败(比如当前窗口不是文件管理器), fallback到主目录 if [ -z "$CURRENT_DIR" ]; then CURRENT_DIR="$HOME" fi # 打开终端到目标目录 gnome-terminal --working-directory="$CURRENT_DIR" -- zsh
场景2:通用适配(支持大多数文件管理器)
如果用的是Thunar、Dolphin这类其他管理器,或者想更通用,可以装个xdotool来获取活跃窗口的进程目录:
- 先安装xdotool(Debian/Ubuntu系):
sudo apt install xdotool
- 修改脚本:
#!/bin/zsh # 获取当前活跃窗口的PID ACTIVE_PID=$(xdotool getactivewindow getwindowpid) # 读取该进程的当前工作目录 CURRENT_DIR=$(readlink /proc/"$ACTIVE_PID"/cwd) # 容错处理:如果路径无效, fallback到主目录 if [ -z "$CURRENT_DIR" ] || [ ! -d "$CURRENT_DIR" ]; then CURRENT_DIR="$HOME" fi # 打开终端到目标目录 gnome-terminal --working-directory="$CURRENT_DIR" -- zsh
最后一步:重新测试
修改完脚本后,确保它的执行权限还在(如果之前加过chmod +x就不用重复操作),然后重新配置快捷键,用绝对路径调用脚本,再试试快捷键应该就能正常工作啦!
备注:内容来源于stack exchange,提问作者soroush
相关产品推荐
相关产品推荐

