Re: [ros-users] rosbash: roscd magic for cleaner title/promp…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: User discussions
Date:  
To: Radu Bogdan Rusu, User discussions
Subject: Re: [ros-users] rosbash: roscd magic for cleaner title/prompt
Hi Radu,

I tried running the same sequence of commands and it doesn't hang on
my machine. But you are right that mixing roscd and cd creates
problems. The scripting I did was a pretty quick hack into the roscd
machine - there might be a more robust way to handle the switching.

Ivan

On Wed, Feb 2, 2011 at 1:57 PM, Radu Bogdan Rusu <> wrote:
> Not bad! :)
>
> The problem is... I bet most folks tend to mix-and-match roscd with cd.
>
> [:/opt/ros/unstable/ros]$ cd /tmp/
> [:/tmp]$ roscd pcl
> [pcl]:$ cd /
> []:$ ls
> ... hangs...  Cltr+C... nothing
>
>
> Cheers,
> Radu.
> --
> http://pointclouds.org
>
> On 02/02/2011 10:51 AM, Patrick Bouffard wrote:
>> +1. Nice.
>>
>> Can this be put into diamondback (as a disabled-by-default option)?
>>
>> Pat
>>
>> On Wed, Feb 2, 2011 at 10:29 AM, Ivan Dryanovski
>> <>  wrote:
>>> Hi everyone,
>>>
>>> My bash shell prompt and tab title normally look something like this:
>>>
>>> "idryanov@idryanov-desktop:~/ros/some-stack/foo$"
>>>
>>> I like to have several tabs opened, each one for a different package
>>> I'm working on. I tweaked my rosbash file to manipulate the bash
>>> prompt i get when working in ROS. So every time I type in `roscd foo`
>>> (where foo is some package or stack) the tab title is replaced by
>>> "[foo]" and my prompt is replaced by "[foo]:$ ". Further, if I then
>>> type in `cd src`, the prompt is replaced by "[foo\src]". This makes it
>>> much quicker to identify the working directory for each of the
>>> (possibly many)  tabs I have open.
>>>
>>> When I type in `roscd`, the tab title and prompt revert to their
>>> default system behavior (whatever it was prior to typing in `roscd
>>> foo`).
>>>
>>> To play around with this, just replace the "function roscd" in
>>> /ros/tools/rosbash with the code at the end of the email.
>>>
>>> Cheers,
>>> Ivan
>>>
>>> ###########################################
>>> # To enter ROSCD_MODE, type in roscd name_of_package
>>> # To exit ROSCD_MODE, type in roscd
>>> # If ROSCD_MODE is set, replaces the default bash prompt and tab title
>>> # with [name_of_package].
>>>
>>> export PS1_BAK=$PS1
>>>
>>> PROMPT_COMMAND='
>>> if [ "$ROSCD_MODE" ]; then
>>>   basedir="${PWD#${PWD%${ROSCD_MODE}*}}"
>>>   export PS1="\[\e]0;[ ${ROSCD_MODE} ]\a\]\[\e[31;1m\][$basedir]:\$ \[\e[0m\]"
>>>     else
>>>   export PS1=$PS1_BAK
>>> fi'
>>>
>>> function roscd {
>>>     local rosvals
>>>
>>>     if [ -z $1 ]; then
>>>       cd ${ROS_ROOT}
>>>       unset ROSCD_MODE
>>>       return 0
>>>     fi
>>>
>>>     _ros_decode_path $1 forceeval
>>>     if [ $? != 0 ]; then
>>>       echo "roscd: No such package '$1'"
>>>       return 1
>>>     elif [ -z $rosvals ]; then
>>>       cd ${ROS_ROOT}
>>>       return 0
>>>     else
>>>       cd ${rosvals[1]}${rosvals[2]}${rosvals[3]}
>>>       export ROSCD_MODE=${rosvals[0]}
>>>       return 0
>>>     fi
>>> }
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>>
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>> _______________________________________________
>> ros-users mailing list
>>
>> https://code.ros.org/mailman/listinfo/ros-users
> _______________________________________________
> ros-users mailing list
>
> https://code.ros.org/mailman/listinfo/ros-users
>