Консоль не открывается в текущем каталоге (pwd)

Некоторые файловые менеджеры, такие как pcmanfm или pcmanfm-qt, открывают терминалы в текущем каталоге, устанавливая $PWD перед открытием терминала. Большинство терминалов ведут себя так, как ожидалось. Это включает в себя xterm, gnome-terminal и xfce4-terminal. Однако konsole всегда открывается в предварительно заданном каталоге (обычно $HOME).

Как konsole можно сделать, чтобы $PWD относиться к другим терминалам?

] Это давняя проблема, которая возникла по крайней мере с 2010 года.

pcmanfm: открывает терминал в неправильной папке # 991 «Открыть в терминале» ошибочно при использовании 2 панелей. Как мне изменить " default working "каталог терминальных приложений в RHEL6?

Предыдущие решения потребовали исправления исходного кода. По-видимому, патч был представлен, но он никогда не принимался.

pcmanfm: открывает терминал в неправильной папке
1
задан 11 May 2018 в 14:29

2 ответа

В течение нескольких лет не было настройки для konsole соблюдения $PWD. Тем не менее, есть опция командной строки --workdir, которая может быть использована скриптом для выполнения функции konsole по желанию.

Проверьте путь, чтобы найти доступное пользователю местоположение, которое имеет приоритет над /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, и использование будет прозрачным. Подобные скрипты могут быть созданы для других программ, которые не ведут себя по желанию.

1
ответ дан 17 July 2018 в 14:35

В течение нескольких лет не было настройки для konsole соблюдения $PWD. Тем не менее, есть опция командной строки --workdir, которая может быть использована скриптом для выполнения функции konsole по желанию.

Проверьте путь, чтобы найти доступное пользователю местоположение, которое имеет приоритет над /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, и использование будет прозрачным. Подобные скрипты могут быть созданы для других программ, которые не ведут себя по желанию.

1
ответ дан 20 July 2018 в 14:40

Другие вопросы по тегам:

Похожие вопросы: