[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Temporary color prompt in bash script



Thanks guys, 
but this is not the solution I'm looking for ...
Now, I ask the question in other terms:
Is It possible to print of a string at the exit of a bash script?
e.g.: user@mypc: # bash script has just finished! [prompt] 
with the prompt that remains immediately after the string printed.

Thanks, as always, for reply.

> [...]
> 
> > You have to source the script instead of running it.
> 
> Yes, exactly.
> 
> > I'm not entirely clear about a new shell gets it's own env that
> > disappears when the shell exits thing, but try this:
> 
> It's not only a shell thing. It's a basic Unix process thing:
> child processes inherit (well, almost always) their parent's
> environment -- more precisely a copy of it. They can change
> their copy, but not the parent's. That's by design: lots of
> loosely coupled programs calling each other (and that's what
> Unix is, after all ;-) would degenerate into an unmaintainable
> mess otherwise...
> 
> > $ cat setps1
> > ##!/bin/bash
> > # can i change ps1 from a script?
> > echo "FOO = ${FOO}"
> > export FOO=BAR
> > echo "FOO now = ${FOO}"
> > export PS1='\[\e]0;\u@\h:
> > \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w
> > #\[\033[91m\] '
> > 
> > $ export FOO=FOO
> > $ ./setps1
> > FOO = FOO
> > FOO now = BAR
> > $ echo $FOO
> > FOO
> > 
> > See?  FOO is back to it's pre ./setps1 value
> > 
> > Now try
> > $ source setps1
> 
> That's the way. There's a shorthand for "source", which is ".". So instead
> of doing
> 
>   source setps1
> 
> you can say
> 
>   . setps1
> 
> Cheers
> -- tomás
> 


Reply to: