This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Change PS1 when run as administrator


Am 15.03.2016 um 18:08 schrieb Corinna Vinschen:
On Mar 15 12:33, Andrew Schulman wrote:
I just came up with this recipe to change the default PS1 value to use red for the user@host part of the prompt and to change the $ character to a #:

     if id | grep -qi 'member of administrators group'
     then
         export PS1=$(echo "$PS1" | sed -e 's_32_31_' -e 's_\\\$_#_')
     fi

IÂm not certain the string match on the output of id(1) works everywhere.  Is there a better way to check for admin privileges under Cygwin?  You canÂt check for UID or EUID == 0, for example, as youÂd do on a true POSIX system.
Ha!  Yes, there is:  see
https://cygwin.com/ml/cygwin/2015-02/msg00057.html.  The magic test is

id -G | grep -qE '\<(544|0)\>'

where 544 is the Administrators group, and 0 is the root group in case the
old root group entry is present in /etc/group.

For example:

id -G | grep -qE '\<(544|0)\>' && echo admin || echo user
Thou shalt not use the test for gid 0 anymore.  If it works, remove the
entry from /etc/group, or better, remove /etc/group entirely.  This entry
will render wrong and unwanted results when you least expect them.  Such
cruft always does.
So id -G | grep -q '\<544\>' I suppose. Is there also a universal replacement for
    elif id | grep -e "gid=.*(Power Users)" > /dev/null
?
Thomas

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]