Ejecute el script de shell al navegar al directorio con cd

Ejecute el script de shell al navegar al directorio con cd

¿Está disponible configurar el script para que se ejecute en un directorio en particular cuando ingresa a cdél?

Por ejemplo, si /fooes un directorio con gitun proyecto, ¿es posible cd /fooejecutarlo automáticamente git statuso algunos npmscripts?

No vincule la respuesta estrictamente a git, imagine que podría ser cualquier otro comando/script.

Respuesta1

Puede reemplazar cdcon una función que agregue cualquier procesamiento que desee:

cd() {
    builtin cd "$@"
    # Do whatever you want here
}

Respuesta2

Utilizo algo similar a la respuesta de Stephen Kitt en mi .bashrc:

function cd() {
  command cd "$@" || return

  if [[ -d .git ]]
  then
    git status --short
  else
    ls -al
  fi
}

Puede crear condiciones adicionales para manejar diferentes cosas según sea necesario.

NOTA: dado que estamos bloqueando la referencia al cdcomando, debe usar command cd, builtin cdo \cdpara evitar que la función se llame a sí misma y se repita para siempre. Por este motivo, a algunos les puede resultar útil cambiar el nombre de esta función.

Respuesta3

Una de las formas de hacerlo es mediante aliasel comando:

alias cdgit="cd /foo; git status"

Luego ejecutas cdgity vas al directorio /fooy ejecutas.git status

información relacionada