Estou tentando configurar algo em um servidor em que corro, sempre que estou cd
em uma public_html
pasta 95% do tempo, há alguns comandos que sempre executarei para verificar certas coisas.
Existe cd
alguma maneira que eu possa ligar, então se o diretório for a public_html
, ele executará automaticamente os comandos para mim?
Se eu não conseguir me conectar ao cd
comando, existem outras coisas que eu poderia fazer para alcançar o resultado que estou buscando?
Estou executando o CentOS 5.8.
bash
shell
cd-command
TMH
fonte
fonte
echo "Testing..."
pouco acima da saída if, mas nada. Preciso fazer algo para aplicar essas alterações?. ~/.bash_profile
/bin/cd
no meu CentOS, portanto, esta solução pode não funcionarcd -P public_html
oucd ~/public_html
ou tem um comportamento inesperado se você não podecd
entrarpublic_html
.Com
ksh
oubash
(ouzsh
):Com
zsh
:(
chpwd
É um gancho função que é chamado sempre que muda o diretório de trabalho atual (por meio decd
,pushd
,popd
...)).fonte
O agrupamento
cd
, um comando existente, não é recomendado.Uma solução mais universal seria definir um
chpwd
gancho personalizado no Bash. (De acordo com as tags desta pergunta, suponho que você esteja usando o Bash)Não há um sistema completo de ganchos projetado no Bash quando comparado com outros invólucros modernos.
PROMPT_COMMAND
A variável é usada como uma função do gancho, que é equivalente aoprecmd
gancho no ZSH,fish_prompt
no Fish. Por enquanto, o ZSH é o único shell que eu conheço que possui umchpwd
gancho embutido.chpwd
Hook in BashÉ fornecido um truque para configurar um
chpwd
gancho equivalente no Bash com base emPROMPT_COMMAND
.Desde que nós estamos detectando
PWD
alteração diretamente, a solução funciona comcd
,pushd
epopd
.Nota : A principal diferença entre nossa
chpwd
implementação no Bash echpwd
no ZSHPROMPT_COMMAND
é que não é suportada em um shell Bash não interativo.Uso
Fonte: Criar gancho equivalente chpwd no Bash a partir da minha essência.
Para quem quiser uma resposta para ZSH. Use o
chpwd
gancho no ZSH. Não defina achpwd()
função diretamente. Mais detalhes aqui .fonte
Não sou especialista em bash, mas aceitaria a resposta do @ UVV e a modificaria um pouco para fazer isso:
public_html
procurar, basta verificar algumhook-script
arquivo no diretório de destino$1
, digamoscd_hook.sh
,.hook-script
, execute-o e siga em frente com ocd
Isso parece mais genérico porque você poderá aplicar o
cd
-hook a qualquer diretório, se assim o desejar, apenas adicionando umcd_hook.sh
no referido diretório.fonte
cd
algum lugar, verifique se há um.bashcd
arquivo e execute-o, se existir.Usando a poderosa abordagem zsh no bash:
Primeiro, uma maneira fácil de estender o bash:
~ / .runscripts
Inclua no .bashrc:
Você pode criar ~ / .bashrc.d / cdhook com:
Agora cabe a você substituir a função:
fonte