Ivan and I added the following and seems to work fine now:<br><br>###########################################<br># To enter ROSCD_MODE, type in roscd name_of_package<br># To exit ROSCD_MODE, type in roscd<br># If ROSCD_MODE is set, replaces the default bash prompt and tab title<br>

# with [name_of_package].<br><br>export PS1_BAK=$PS1<br><br>PROMPT_COMMAND='<br>if [ "$ROSCD_MODE" ]; then<br>  basedir="${PWD#${PWD%%${ROSCD_MODE}*}}"<br>  if [ -z $basedir ]; then<br>      unset ROSCD_MODE<br>

      export PS1=$PS1_BAK<br>        else<br>      export PS1="\[\e]0;[ ${ROSCD_MODE} ]\a\]\[\e[31;1m\][$basedir]:\$ \[\e[0m\]"<br>  fi           <br>       else<br>  export PS1=$PS1_BAK<br>fi'<br><br>function roscd {<br>

    local rosvals<br><br>    if [ -z $1 ]; then<br>      cd ${ROS_ROOT}<br>      unset ROSCD_MODE<br>      return 0<br>    fi<br><br>    _ros_decode_path $1 forceeval<br>    if [ $? != 0 ]; then<br>      echo "roscd: No such package '$1'"<br>

      return 1<br>    elif [ -z $rosvals ]; then<br>      cd ${ROS_ROOT}<br>      return 0<br>    else<br>      cd ${rosvals[1]}${rosvals[2]}${rosvals[3]}<br>      export ROSCD_MODE=${rosvals[0]}<br>      return 0<br>    fi<br>

}<br>#################################3<br><br>The fixes happened on <br>      basedir="${PWD#${PWD%%${ROSCD_MODE}*}}"<br>to keep track of subdirectory names where they are the same, such as in rviz/src/rviz<br>

<br>And in the PROMPT_COMMAND part...<br><br>The above code should work fine now. Let us know if you still find problems.<br><br>Regards,<br><br>Carlos<br><br><div class="gmail_quote">On Wed, Feb 2, 2011 at 2:11 PM, Ivan Dryanovski <span dir="ltr"><<a href="mailto:ivan.dryanovski@gmail.com">ivan.dryanovski@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Radu,<br>
<br>
I tried running the same sequence of commands and it doesn't hang on<br>
my machine. But you are right that mixing roscd and cd creates<br>
problems. The scripting I did was a pretty quick hack into the roscd<br>
machine - there might be a more robust way to handle the switching.<br>
<font color="#888888"><br>
Ivan<br>
</font><div><div></div><div class="h5"><br>
On Wed, Feb 2, 2011 at 1:57 PM, Radu Bogdan Rusu <<a href="mailto:rusu@willowgarage.com">rusu@willowgarage.com</a>> wrote:<br>
> Not bad! :)<br>
><br>
> The problem is... I bet most folks tend to mix-and-match roscd with cd.<br>
><br>
> [:/opt/ros/unstable/ros]$ cd /tmp/<br>
> [:/tmp]$ roscd pcl<br>
> [pcl]:$ cd /<br>
> []:$ ls<br>
> ... hangs...  Cltr+C... nothing<br>
><br>
><br>
> Cheers,<br>
> Radu.<br>
> --<br>
> <a href="http://pointclouds.org" target="_blank">http://pointclouds.org</a><br>
><br>
> On 02/02/2011 10:51 AM, Patrick Bouffard wrote:<br>
>> +1. Nice.<br>
>><br>
>> Can this be put into diamondback (as a disabled-by-default option)?<br>
>><br>
>> Pat<br>
>><br>
>> On Wed, Feb 2, 2011 at 10:29 AM, Ivan Dryanovski<br>
>> <<a href="mailto:ivan.dryanovski@gmail.com">ivan.dryanovski@gmail.com</a>>  wrote:<br>
>>> Hi everyone,<br>
>>><br>
>>> My bash shell prompt and tab title normally look something like this:<br>
>>><br>
>>> "idryanov@idryanov-desktop:~/ros/some-stack/foo$"<br>
>>><br>
>>> I like to have several tabs opened, each one for a different package<br>
>>> I'm working on. I tweaked my rosbash file to manipulate the bash<br>
>>> prompt i get when working in ROS. So every time I type in `roscd foo`<br>
>>> (where foo is some package or stack) the tab title is replaced by<br>
>>> "[foo]" and my prompt is replaced by "[foo]:$ ". Further, if I then<br>
>>> type in `cd src`, the prompt is replaced by "[foo\src]". This makes it<br>
>>> much quicker to identify the working directory for each of the<br>
>>> (possibly many)  tabs I have open.<br>
>>><br>
>>> When I type in `roscd`, the tab title and prompt revert to their<br>
>>> default system behavior (whatever it was prior to typing in `roscd<br>
>>> foo`).<br>
>>><br>
>>> To play around with this, just replace the "function roscd" in<br>
>>> /ros/tools/rosbash with the code at the end of the email.<br>
>>><br>
>>> Cheers,<br>
>>> Ivan<br>
>>><br>
>>> ###########################################<br>
>>> # To enter ROSCD_MODE, type in roscd name_of_package<br>
>>> # To exit ROSCD_MODE, type in roscd<br>
>>> # If ROSCD_MODE is set, replaces the default bash prompt and tab title<br>
>>> # with [name_of_package].<br>
>>><br>
>>> export PS1_BAK=$PS1<br>
>>><br>
>>> PROMPT_COMMAND='<br>
>>> if [ "$ROSCD_MODE" ]; then<br>
>>>   basedir="${PWD#${PWD%${ROSCD_MODE}*}}"<br>
>>>   export PS1="\[\e]0;[ ${ROSCD_MODE} ]\a\]\[\e[31;1m\][$basedir]:\$ \[\e[0m\]"<br>
>>>     else<br>
>>>   export PS1=$PS1_BAK<br>
>>> fi'<br>
>>><br>
>>> function roscd {<br>
>>>     local rosvals<br>
>>><br>
>>>     if [ -z $1 ]; then<br>
>>>       cd ${ROS_ROOT}<br>
>>>       unset ROSCD_MODE<br>
>>>       return 0<br>
>>>     fi<br>
>>><br>
>>>     _ros_decode_path $1 forceeval<br>
>>>     if [ $? != 0 ]; then<br>
>>>       echo "roscd: No such package '$1'"<br>
>>>       return 1<br>
>>>     elif [ -z $rosvals ]; then<br>
>>>       cd ${ROS_ROOT}<br>
>>>       return 0<br>
>>>     else<br>
>>>       cd ${rosvals[1]}${rosvals[2]}${rosvals[3]}<br>
>>>       export ROSCD_MODE=${rosvals[0]}<br>
>>>       return 0<br>
>>>     fi<br>
>>> }<br>
>>><br>
>>> _______________________________________________<br>
>>> ros-users mailing list<br>
>>> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
>>> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
>>><br>
>>><br>
>> _______________________________________________<br>
>> ros-users mailing list<br>
>> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
>> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
> _______________________________________________<br>
> ros-users mailing list<br>
> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
><br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</div></div></blockquote></div><br>