[SLUG] Bash help
Phil Kershaw
pmk at kershaw.eclipse.co.uk
Mon Sep 6 19:16:27 BST 2004
Thanks Gav. A lot to think about here, I'll let you know how I went on.
Regards
Phil
-----Original Message-----
From: scarborough-bounces at mailman.lug.org.uk
[mailto:scarborough-bounces at mailman.lug.org.uk] On Behalf Of Gavin Baker
Sent: 05 September 2004 23:31
To: Scarborough Linux User Group
Subject: Re: [SLUG] Bash help
Hi Phil,
Phil Kershaw wrote:
><snip>
>
>So I have been trying to set up bashrc to test whether I have opened an
>aterm or an xterm. Depending which one is open I use a different file
>to set dircolors variable. The listing is :-
>
>If [ $TERM = aterm ]; then
> eval `dircolors -b ~/.dircolorsa
>Elif [ $TERM = Xterm ]; then
> eval `dircolors -b ~/.dircolorsx
>fi
><snip>
>
>
$TERM is the terminal 'type', Its used to get information about your
terminals capabilities.
Have a quick look at 'man 7 term' for the kind of things it's used for.
Most X-Terminal-Emulators set TERM to xterm.
I don't think either app has it's own $HOME/.(a|x)termrc so you can't
just add it there :(
Here is one idea how to do it. The parent process ID of your shell will
be the terminal emulator that started it. $PPID is the parent process
ID, so you could just look at the $PPID's name.
ps -A | grep $PPID
That will give you results like
25325 pts/3 00:00:00 aterm
for example.
So if you want to, say, check if the current shell is running in an
aterm, you could do
ps -A | grep "$PPID.*aterm$"
# grep returns a 0 if the regex matched, 1 if not.
if [ $? -eq 0 ];then
echo "We are an aterm"
# Do atermy type things...
fi
Where $? is the return code of the previously run command, and
$PPID.*aterm$ means to look for a line (from ps -A) that contains the
pid number of the parent process (bashs' $PPID), followed by any number
of other characters (.*) followed by 'aterm', followed by the end of
line ($).
That will work in your bashrc, but be careful about testing it in a
script, as the scripts $PPID will be the bash process that ran it :)
(you can 'source' it in a script though).
You could also just make scripts for xterm and aterm and add them to
your $PATH in front of the systems of course, but I think the idea above
is far cooler :)
Good luck!
Regards,
Gav
More information about the Scarborough
mailing list