Acho que você pode encontrar a solução certa em stackoverflow:
Eu tenho alguns diretórios que eu tenho que ir com muito mais freqüência do que outros, como para música, trabalho, programação, etc. Então, eu quero ter comandos exclusivos, dizer "gotomusic" ou "gotodropbox" para ir para estes pastas porque senão eu tenho que digitar algo como cd /media/sda9/Work/Dropbox
e assim por diante.
É uma boa ideia? Existe uma maneira melhor de obter o mesmo resultado?
Eu tentei escrever o seguinte script "gotomusic"
#!/bin/bash
cd /media/sda8/Music
Mas isso não funciona. O que há de errado em fazer isso?
Obrigado!
Acho que você pode encontrar a solução certa em stackoverflow:
Você pode fazer isso usando aliases, basta adicionar seu ~/.bashrc
alias gotomusic='cd /home/user/music'
alias gotopics='cd /home/user/pictures'
etc ...
O problema é que você não pode alterar o diretório de trabalho do processo pai.
Relacionado ao seu problema, o procedimento é o seguinte:
O diretório de trabalho atual do seu shell interativo é $PWD
. Então você inicia gotomusic
e seu shell interativo (eu chamarei parentbash
) inicia uma nova instância de bash
(eu chamo de childbash
) como um novo processo. childbash
herda vários atributos de parentbash
. Entre outras coisas, ele herda seu diretório de trabalho de parentbash
.
Como você instrui childbash
a ler os comandos do seu script, ele altera seu próprio diretório de trabalho para /media/sda8/Music
e termina.
Neste ponto, parentbash
fica ativo novamente com o mesmo estado anterior à execução de childbash
.
Para que parentbash
invoque seu comando cd
builtin, você deve fornecer seu script. Isso é feito facilmente por
source gotomusic
Mas a questão permanece se essa abordagem é adequada para uma rápida mudança de diretório.
Existem várias implementações de sistemas de marcadores de diretórios bashmarks
, mas acho que a melhor solução seria escolher facilmente a partir de uma lista dos diretórios mais usados. Eu não sei se existe algo assim para bash
, mas se você quiser usar zsh
você pode obtê-lo em [ 1 ].
Tags linux shell-script