Я использую оконный менеджер листов и переключился gnome-terminal
с нескольких вкладок на несколько urxvt
экземпляров, управляемых оконным менеджером. Одна из функций, которые мне не хватает, - это возможность открыть новый терминал, который по умолчанию соответствует рабочему каталогу последнего.
Вкратце: мне нужен способ открыть новый urxvt (bash), который по умолчанию равен $ PWD последнего использованного.
Единственное решение, которое приходит мне в голову, это сохранить текущий путь на каждом cd
с помощью чего-то вроде этого:
echo $PWD > ~/.last_dir
и восстановите путь на новом терминале следующим образом:
cd `cat ~/.last_dir`
Я могу получить вторую команду, .bashrc
но я не знаю, как выполнить первую при каждом изменении каталога :)
Любое более простое решение, которое не связано с использованием screen
или tmux
приветствуется.
источник
tabbed
" расширение Perlurxvt
?Ответы:
Я вижу три решения с использованием
.last_dir
. Вы можете разместитьecho $PWD > ~/.last_dir
либо:В специальную функцию, которая будет оберткой для
cd
:Поместите это в свой файл
~/.bashrc
и затем используйтеcd_
вместо компакт-диска каждый раз, когда вы хотите сохранить новый рабочий каталог.По вашему
$PROMPT_COMMAND
( не рекомендуется ):Вы можете проверить это прямо из терминала или поместить его в
~/.bashrc
. Это решение, однако, запускает запись на диск каждый раз, когда появляется подсказка, что может вызвать проблемы, но, с другой стороны,.last_dir
будет содержать текущий каталог независимо от того, как вы туда попали.В пользовательском сценарии расширения perl для
rxvt
. Я никогда не создавал его сам, но вы можете найти немало примеров в Интернете.источник
PROMPT_COMMAND
, одну из самых злоупотребляемых переменных среды всех времен$PWD
был не в кавычках.) Позвольте мне исправить это ... Там. Это должно сделать это.В настоящее время я использую эту версию решения № 1
внутри моего
.zshrc
источник
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXIT
я хочу всегда начинать у себя дома, кроме случаев, когда я открываю новую вкладкуauto_cd
функция Zsh. Оказывается, мы можем использовать хук, который предоставляет zsh: gist.github.com/jonleighton/1f0b96b49247a07dbaa30fbbe70b34f7Это на самом деле довольно тривиально; если вы запускаете
urxvt
из существующегоurxvt
окна, новое окно будет в том же каталоге. Яdup
псевдонимы , чтобыurxvt &
по этой причине. Если вы хотите, чтобы он был связан с горячей клавишей, вы можете использоватьbind
команду bash . Например, чтобы связать это с F1:источник
( urxvt & ) &>/dev/null
вместо фона.Просто добавьте
. /etc/profile.d/vte.sh
в свой,~/.bashrc
чтобы получить ту же функциюисточник
Конечно, это рабочий подход для изменения
cd
поведения, но я бы хотел показать более простое решение. В man bash (1) я обнаружил, что если интерактивный bash выходит, он запускается,~/.bash_logout
если существует. Таким образом, вместо сохранения пути при каждом вызовеcd
последний путь может быть сохранен при выходе.Мой
~/.bash_logout
очень прост:И где-то в моем
.bashrc
я разместил эту строку:источник
.bash_logout
работает только приlogin shells
выходе, это не всегда так.bash
выходе с помощью:trap "echo $PWD > ~/.lastdir" EXIT"
trap
подход тоже хорош, мне нравится!Очень часто я использую несколько окон терминала одновременно, в каждом из которых есть несколько вкладок. Например: одно окно для вкладок разработки исходного кода, одно окно для латексных файлов, одно окно для выполнения R и сценариев и т. Д. В одном окне я хочу, чтобы новый терминал с вкладками изменился на каталог, который используется последним в этом конкретном окне (раньше это работало, но с новой версией gnome это почему-то не работает). Следующее грязное решение прекрасно работает для меня. Я положил это в .bashrc.
источник