[GRASS-dev] Custom GRASS command line prompt

Huidae Cho grass4u at gmail.com
Mon Dec 15 13:34:43 PST 2014


Mine looks like this (bash shell):

grass_ps(){
        echo "G `g.gisenv LOCATION_NAME`/`g.gisenv MAPSET`"
}
export PS1="\[\033]0;\$(grass_ps) \w\007\]\$(grass_ps) \w> "

The prompt gets updated dynamically since grass_ps() is called every time
you hit enter.

Huidae

On Mon, Dec 15, 2014 at 6:15 AM, Nikos Alexandris <nik at nikosalexandris.net>
wrote:
>
> On 15.12.2014 12:33, Michel Wortmann wrote:
>
>  Hi Nikos, Hamish and list,
>> you guys played around with your commandline prompts last year (see
>> below), I was just implementing the same thing into my ~/.grass.bashrc
>> (GRASS 7.0.0b3) but found that the location and mapset arent actually
>> changed when changing them with g.mapset, i.e. .grass.bashrc isnt
>> actually executed again.
>> Whats the best way getting that to work with or without changing
>> source or $GISBASE files?
>>
>
> Hi Michel!  How nice that someone else is doing this as well :-).  I don't
> think I changed much since -- here is my current setup:
>
> --%<---
> SHORT_VER=`echo "$GRASS_VERSION" | cut -f1,2 -d. | sed -e 's/\.//'`
> GDBASE=`g.gisenv get=GISDBASE | rev | cut -d"/" -f1 | rev`
> GLOCATION=`g.gisenv get="LOCATION_NAME"`
> GMAPSET=`g.gisenv get="MAPSET"`
> export PROMPT_DIRTRIM=2
> # export PS1='\e[32;40mG$SHORT_VER\e[0m [\e[34;40m${GLOCATION}\e[0m /
> \e[32;40m${GMAPSET}\e[0m] :\e[36;40m\w \e[0m[\#/\!] \n\r\e[32;40m>\e[0m '
> export PS1='\[\e[32m\]G$SHORT_VER\[\e[0m\] [ ${GDBASE} /
> \[\e[33m\]${GLOCATION}\[\e[0m\] @\[\e[32;1m\]${GMAPSET}\[\e[0m\] ] :
> \[\e[36m\]\w \[\e[0m\][\#/\!]
> \[\e[32;1m\]>\[\e[0m\] '
> --->%--
>
> and, you are right, the Mapset isn't updated.  The Location, me thinks,
> should not change, or should only in special cases.  We don't usually
> switch Location's from inside a grass session. We do switch Mapsets.  But
> we should be careful because we need to manually instruct the use of the
> "new" history log once changed to another Mapset ("history -w; history -r"
> etc). Right?
>
> Otherwise, I came with a stupid solution, a function inside "grass.bashrc"
> to re-source itself:
>
> --%<---
> # Re-Source Me!
> g.src()
> {
>   source ~/.grass.bashrc
> }
> --->%--
>
> I tested it and it works. Change a mapset and then `g.src` or whatever you
> might name it.  Don't know if it's dangerous though.
>
> Let us know if you come up with something smart.  I would love to see a
> zsh like behaviour inside grass shell.  Would be awesome.
>
> Nikos
>
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20141215/44794f32/attachment.html>


More information about the grass-dev mailing list