某些文件管理器(例如pcmanfm
或)通过在打开终端之前pcmanfm-qt
设置来在当前目录中打开终端。大多数终端的行为都符合预期。这包括、和。但是,始终在预先指定的目录中打开(通常是)。$PWD
xterm
gnome-terminal
xfce4-terminal
konsole
$HOME
如何才能像其他终端一样konsole
受到尊重?$PWD
在最初撰写此问题时,已提交了一个补丁,但未被接受。不过,该补丁似乎已被接受,因此 Ubuntu 22.04 中的 Konsole 表现正常。
这是一个长期存在的问题,至少从 2010 年就已存在。
答案1
注意:Konsole 的最新版本现在支持$PWD
。但是,此解决方案可能仍然有用,因为它展示了如何自定义 Konsole 行为。例如,可以在选项卡中打开 shell,而不是在新窗口中打开。
多年来,一直没有设置 makekonsole
尊重$PWD
。但是,有一个命令行选项--workdir
可供脚本利用,以使 makekonsole
按照需要运行。
/usr/bin
通过检查 的输出来检查路径,以找到优先于 的用户可访问位置echo $PATH
。典型的选项包括~/bin/
和~/.local/bin/
。~/bin/konsole
创建一个名为(或)的文件,~/.local/bin/konsole
其内容如下:#!/usr/bin/env bash # make konsole respect $PWD, as other terminals do # save as ~/bin/konsole or ~/.local/bin/konsole # catch unset or mis-set PWD [[ -z $PWD ]] && PWD="$HOME" [[ "$PWD" == '/' ]] && PWD="$HOME" term_cls='konsole' # window class needed for xdotool to activate window term_bin=`type -a -p konsole | tail -n 1` # location of original `konsole` term_cmd=( "$term_bin" ) [[ $PWD ]] && term_cmd+=( --workdir "$PWD" ) term_tab=( "${term_cmd[@]}" --new-tab ) case $1 in -h|--help|-v|--version|--author|--license|--list-profiles|--list-profile-properties) "$term_bin" "$1" ;; -p) echo 'cannot change profile properties at this time' ;; *) find_app=( xdotool search --onlyvisible --class "$term_cls" windowactivate exec "${term_tab[@]}" ) "${find_app[@]}" || xdotool exec "${term_cmd[@]}" ;; esac
赋予新脚本执行权限。
chmod +x ~/bin/konsole
现在,无论何时运行此脚本,它都会处理$PWD
并执行/usr/bin/konsole --workdir "$PWD"
。如果放在正确的文件夹中,它将优先于实际文件konsole
,并且使用将是透明的。可以为其他行为不符合预期的程序创建类似的脚本。