Estou usando um gerenciador de janelas lado a lado e mudei de gnome-terminal
várias guias para várias urxvt
instâncias gerenciadas pelo gerenciador de janelas. Um dos recursos que sinto falta é a capacidade de abrir um novo terminal que tenha como padrão o diretório de trabalho do último.
Resumindo: preciso de uma maneira de abrir um novo urxvt (bash) que tenha como padrão $ PWD do último usado.
A única solução que me vem à mente é salvar o caminho atual em todos cd
com algo parecido com isto:
echo $PWD > ~/.last_dir
e restaure o caminho no novo terminal desta maneira:
cd `cat ~/.last_dir`
Posso obter o segundo comando, .bashrc
mas não sei como executar o primeiro em cada alteração de diretório :)
Qualquer solução mais simples que não envolva screen
ou tmux
use é bem-vinda.
bash
terminal
cd-command
rxvt
Luca
fonte
fonte
tabbed
extensão " " perl deurxvt
?Respostas:
Eu vejo três soluções usando
.last_dir
. Você pode colocar o seguinteecho $PWD > ~/.last_dir
:Em uma função especial que seria um wrapper para
cd
:Coloque isso em seu
~/.bashrc
e use emcd_
vez de cd toda vez que desejar que seu novo diretório de trabalho seja armazenado.No seu
$PROMPT_COMMAND
( não recomendado ):Você pode testar isso diretamente do terminal ou colocá-lo em
~/.bashrc
. Essa solução, no entanto, aciona uma gravação em disco toda vez que o prompt é exibido, o que pode causar problemas - mas, por outro lado,.last_dir
conteria o diretório atual, não importa como você chegou lá.Em um script de extensão perl personalizado para
rxvt
. Eu nunca criei um, mas você pode encontrar alguns exemplos na web.fonte
PROMPT_COMMAND
, uma das variáveis de ambiente mais abusadas de todos os tempos #$PWD
foi citado.) Deixe-me consertar isso ... Pronto. Isso deve fazer.Atualmente, estou usando esta versão da solução nº 1
dentro do meu
.zshrc
fonte
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXIT
eu quero começar sempre na minha casa, exceto quando eu abrir uma nova abaauto_cd
recurso zsh. Acontece que podemos usar um gancho que o zsh fornece: gist.github.com/jonleighton/1f0b96b49247a07dbaa30fbbe70b34f7Isso é realmente bastante trivial; se você executar a
urxvt
partir daurxvt
janela existente , a nova janela estará no mesmo diretório. Eu fiz umdup
aliasurxvt &
por esse motivo. Se você deseja vinculá-lo a uma tecla de atalho, use obind
comando bash . Por exemplo, para vinculá-lo a F1:fonte
( urxvt & ) &>/dev/null
vez de apenas o plano de fundo.Basta adicionar o
. /etc/profile.d/vte.sh
seu~/.bashrc
para obter o mesmo recursofonte
É claro que é uma abordagem funcional para modificar
cd
o comportamento de uma pessoa, mas eu gostaria de mostrar uma solução mais simples. No man bash (1) , descobri que, se um bash interativo sair, ele será executado~/.bash_logout
se existir. Portanto, em vez de armazenar o caminho a cada chamada docd
último caminho, pode ser salvo na saída.Meu
~/.bash_logout
é muito simples:E em algum lugar do meu
.bashrc
eu coloquei esta linha:fonte
.bash_logout
é executado apenas quando alogin shells
saída é, nem sempre é o caso.bash
sair com:trap "echo $PWD > ~/.lastdir" EXIT"
trap
abordagem também é legal, eu gosto!Muitas vezes eu uso várias janelas de terminal de uma só vez, cada uma com várias guias. Por exemplo: uma janela para guias de desenvolvimento de código-fonte, uma janela para arquivos de látex, uma janela para execução e script de R, etc. Em uma janela, desejo que um novo terminal com guias mude para o diretório usado por último nessa janela específica (isso costumava funcionar no passado, mas com a nova versão do gnome, de alguma forma não funciona). A seguinte solução suja funciona bem para mim. Eu coloquei isso em .bashrc.
fonte