<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Date: Mon, 9 Jan 2012 15:20:16 +0100<br>
From: Andrew Stewart <<a href="mailto:boss@airbladesoftware.com">boss@airbladesoftware.com</a>><br>
To: London Ruby Users Group <<a href="mailto:chat@lists.lrug.org">chat@lists.lrug.org</a>><br>
Subject: [LRUG] Last exit status in bash prompt<br>
Message-ID:<br>
        <<a href="mailto:633E9F1E-1145-4E51-8DEA-B96D76B3FF77@airbladesoftware.com">633E9F1E-1145-4E51-8DEA-B96D76B3FF77@airbladesoftware.com</a>><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
Hola El Rug,<br>
<br>
I'm having trouble incorporating the exit status of the last command into my bash prompt.  My prompt executes a couple of commands to display the current Ruby version and the current git status, and then I want to use the exit status of the last command to control the colour of the final character (e.g. $).<br>


<br>
However the prior commands (for the Ruby and git info) make the last-exit-status test useless so I need to save out the value at the start of the prompt.  However I cannot seem to make it work.<br>
<br>
For example, this shows the correct exit status:<br>
<br>
  PS1="\$? \$(rbenv version-name) $ "<br>
<br>
But I want to make use of the exit status at the end of the prompt, along these lines:<br>
<br>
  PS1="XXX \$(rbenv version-name) \$( if [ YYY -eq 0 ]; then echo $GREEN; else echo $RED; fi ) $ "<br>
<br>
where:<br>
- XXX means save $?<br>
- YYY means retrieve what XXX saved<br>
- GREEN and RED are variables defined earlier in my bashrc with Bash's wacky colour codes.<br>
<br>
I'm sure there's a simple answer but I can't find it!<br>
<br>
Thanks in advance,<br>
<br>
Andy Stewart<br>
-----<br>
<a href="http://airbladesoftware.com" target="_blank">http://airbladesoftware.com</a><br>
<br></blockquote><div><br><br>It would be easy to make the whole prompt red/green, by including the RC check as the very first part of PS1:<br><span style="font-family:courier new,monospace">PS1='`if [ $? == 0 ] ; then echo TRUE ; else echo FALSE ;fi`'" \u@\h - \w\n`ruby -v`\$ "</span><br>

<br>Or, you could set another var RUBYVERSION in .bashrc and make use of that - down side is that it will only ever represent the version of ruby at the time the shell was started.<br>As an even uglier but complete solution, you can use the var as above, and then set the contents of it at the end of the PS1 string - so the version in the prompt will represent the version as when the last-but-one command completed:<br>

<br><span style="font-family:courier new,monospace">PS1='$RUBYVERSION `if [ $? == 0 ] ; then echo TRUE ; else echo FALSE ;fi`'"\n\u@\h - \w\$ " RUBYVERSION="`ruby -v`"</span><br><br><br>Not attractive bash, but anyway.<br>

<br></div></div>