Is it possible to have a bash script (like a .bashrc or .bash_profile, basically) that is executed only upon cd’ing into a specific folder?

  • Not yet. But you could alias cd to read one. – ott-- May 16 '15 at 22:01

Add this to your ~/.bashrc.

If .bashrc is located in current working directory:

PROMPT_COMMAND='if [[ "$bashrc" != "$PWD" && "$PWD" != "$HOME" && -e .bashrc ]]; then bashrc="$PWD"; . .bashrc; fi'
  • 1
    can you explain how this works...please? :) – mchen.ja May 17 '15 at 5:23
  • 3
    If variable $PROMPT_COMMAND is set, the value is executed as a command prior to issuing each primary prompt. In this case it makes three tests before .bashrc in current working directory is sourced. – Cyrus May 17 '15 at 5:29

Depending on your exact use case and constraints, ondir may suit your needs:

ondir is a small program to automate tasks specific to certain directories. It works by executing scripts in directories when you enter and leave them.

It does this by using a central ~/.ondirrc file for per-dir configuration. In contrast, the clever PROMPT_COMMAND setup that @Cyrus suggested allows for the config to reside in the individual directories themselves. Each approach is valid; it depends on the constraints and data you're dealing with.

Disclaimer: I've never used ondir personally. I came across it while looking for an automatic way to handle git user config per-dir. In that case, ondir didn't fit my needs—I ended up using a git alias passing --config options to git clone.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.