Estoy tratando de configurar algo en un servidor que ejecuto, cada vez que entro cd
en una public_html
carpeta el 95% del tiempo hay algunos comandos que siempre ejecutaré para verificar ciertas cosas.
¿Hay alguna forma de conectarme cd
para que si el directorio es a public_html
, ejecute automáticamente los comandos por mí?
Si no puedo conectarme al cd
comando, ¿hay alguna otra cosa que pueda hacer para lograr el resultado que busco?
Estoy ejecutando CentOS 5.8.
bash
shell
cd-command
TMH
fuente
fuente
echo "Testing..."
poco más arriba de la salida if, pero de nada. ¿Necesito hacer algo para aplicar estos cambios?. ~/.bash_profile
/bin/cd
en mi CentOS, por lo que esta solución podría no funcionarcd -P public_html
ocd ~/public_html
o tiene un comportamiento inesperado si no puedecd
enpublic_html
.Con
ksh
obash
(ozsh
):Con
zsh
:(
chpwd
Es un gancho de función que se llama cada vez que cambia el directorio de trabajo actual (por medio decd
,pushd
,popd
...)).fuente
La envoltura
cd
, un comando existente, no se recomienda.Una solución más universal sería definir un
chpwd
enlace personalizado en Bash. (Según las etiquetas de esta pregunta, supongo que estás usando Bash)No hay un sistema de gancho completo diseñado en Bash en comparación con otros proyectiles modernos.
PROMPT_COMMAND
La variable se utiliza como una función deprecmd
enlace, que es equivalente al enlace en ZSH,fish_prompt
en Fish. Por el momento, ZSH es el único shell que he conocido que tiene unchpwd
gancho incorporado.chpwd
Gancho en BashSe proporciona un truco para configurar un
chpwd
enlace equivalente en Bash basado enPROMPT_COMMAND
.Ya que estamos detectando
PWD
el cambio directamente, la solución trabaja concd
,pushd
ypopd
.Nota : La principal diferencia entre nuestra
chpwd
implementación en Bash ychpwd
en ZSH esPROMPT_COMMAND
que no es compatible con un shell Bash no interactivo.Uso
Fuente: Crear chpwd Equivalent Hook en Bash desde mi esencia.
Para cualquiera que quiera una respuesta para ZSH. Use
chpwd
gancho en ZSH. No defina lachpwd()
función directamente. Más detalles aquí .fuente
No soy un experto en bash, pero tomaría la respuesta de @ UVV y la modificaría un poco para que haga esto:
public_html
, que acababa de comprobar si hay algúnhook-script
archivo en el directorio de destino$1
, por ejemplo,cd_hook.sh
.hook-script
existe, ejecútelo y continúe con elcd
Esto parece más genérico porque luego podrá aplicar el
cd
gancho a cualquier directorio si así lo desea, simplemente agregando uncd_hook.sh
en dicho directorio.fuente
cd
algún lugar, busque un.bashcd
archivo y ejecútelo si existe.Usando el poderoso enfoque zsh en bash:
Primero, una manera fácil de extender bash:
~ / .runscripts
Incluir en .bashrc:
Puede crear ~ / .bashrc.d / cdhook con:
Ahora depende de usted reemplazar la función:
fuente