One thing you could do is use commonly named vars to define the terminal escapes specific to each shell's interpretation in their own sourced script, then bring it all together at the end in a single prompt:

~/.zshrc

    esc1='SPECIFIC TO ZSH'
    esc2='SPECIFIC TO ZSH'
    . ~/.common_prompt

~/.bashrc

    esc1='SPECIFIC TO BASH'
    esc2='SPECIFIC TO BASH'
    . ~/.common_prompt

~/.dashrc

    esc1='SPECIFIC TO DASH'
    esc2='SPECIFIC TO DASH'
    . ~/.common_prompt

~/.common_prompt

     esc3='COMMONLY INTERPRETED ESCAPE SEQUENCE'
     PROMPT_COMMAND='eval PS1=\"printf %b "$esc1" "$esc2" "$esc3"\"'


And if one shell is likely to do more with the prompt than another, just .dot sourcing .common_prompt file doesn't have to be the end. So if zsh is going to do more processing than dash, for instance - because it will - you just take it from there: 

~/.zshrc

    esc1='SPECIFIC TO ZSH'
    esc2='SPECIFIC TO ZSH'
    . ~/.common_prompt
    _more_processing "${PROMPT_COMMAND}"


Proper place to put shell prompt(PS1) when use sh/bash/zsh together
I wrote a little script to automatically update my Network Location based on a couple of conditions, and have coupled that with a launchd plist to have it run every couple of minutes.

However, I've noticed that my launchd plist doesn't seem to get loaded when my computer reboots.  My plist is in ~/Library/LaunchDaemons and is fairly simple:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
    &lt;key&gt;Label&lt;/key&gt;
    &lt;string&gt;com.davedelong.location-updater&lt;/string&gt;
    &lt;key&gt;Program&lt;/key&gt;
    &lt;string&gt;/path/to/my/location_updater.rb&lt;/string&gt;
    &lt;key&gt;StartInterval&lt;/key&gt;
    &lt;integer&gt;180&lt;/integer&gt;
&lt;/dict&gt;
&lt;/plist&gt;


My LaunchDaemons folder has the expected 700 permissions, and running launchctl load with my plist makes things work just fine.  It's just that when I reboot, it's not getting loaded.

I was under the impression that everything in ~/Library/LaunchDaemons and ~/Library/LaunchAgents got loaded automatically by launchd.  Is this not the case?  If this is the case (and I think it is), then why isn't my plist getting loaded?
