Ivan and I added the following and seems to work fine now: ########################################### # 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}*}}" if [ -z $basedir ]; then unset ROSCD_MODE export PS1=$PS1_BAK else export PS1="\[\e]0;[ ${ROSCD_MODE} ]\a\]\[\e[31;1m\][$basedir]:\$ \[\e[0m\]" fi 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 } #################################3 The fixes happened on basedir="${PWD#${PWD%%${ROSCD_MODE}*}}" to keep track of subdirectory names where they are the same, such as in rviz/src/rviz And in the PROMPT_COMMAND part... The above code should work fine now. Let us know if you still find problems. Regards, Carlos On Wed, Feb 2, 2011 at 2:11 PM, Ivan Dryanovski wrote: > 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 > >>> ros-users@code.ros.org > >>> https://code.ros.org/mailman/listinfo/ros-users > >>> > >>> > >> _______________________________________________ > >> ros-users mailing list > >> ros-users@code.ros.org > >> https://code.ros.org/mailman/listinfo/ros-users > > _______________________________________________ > > ros-users mailing list > > ros-users@code.ros.org > > https://code.ros.org/mailman/listinfo/ros-users > > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users >