🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.bash.bug
Article #421

Bash as a root shell (also bug in polite_directory_format)

#421
From: Ray Moody
Date: Thu, 03 Aug 1989 23:25
133 lines
4263 bytes
    I fixed a bug in polite_directory_format:  If $HOME was /a/ray,
the directory /a/raymond would be politely printed as ~mond.

    I also have a few enhancements that make bash work better when you
are root:

    I have added stuff to decde_prompt_string so that "\$" prints "$"
unless you are root, and then it prints "#".  I have changed the
default prompt to make use of this feature.  (This seemed to be a
better approach than picking a default prompt at startup -- now I can
use the same PS1 for both root and normal shells).

    I have changed polite_directory_format so that "/usr/bin" will not
be politely printed as "~usr/bin" when $HOME is /.  (This last one is
really a bugfix and not an enhancement.)

								Ray
-------------------------------------------------------------------------------
RCS file: RCS/builtins.c,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 builtins.c
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:49 1989
--- builtins.c	Thu Aug  3 17:55:45 1989
***************
*** 2680,2686
    char *home = get_string_value ("HOME");
    int l = home ? strlen (home) : 0;
  
!   if (l && strncmp (home, name, l) == 0) {
      strcpy (tdir + 1, name + l);
      tdir[0] = '~';
      return (tdir);

--- 2680,2686 -----
    char *home = get_string_value ("HOME");
    int l = home ? strlen (home) : 0;
  
!   if (l > 1 && strncmp (home, name, l) == 0 && name[strlen (name) - 1] == '/') {
      strcpy (tdir + 1, name + l);
      tdir[0] = '~';
      return (tdir);
===================================================================
RCS file: RCS/Makefile,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 Makefile
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:57 1989
--- Makefile	Thu Aug  3 17:46:07 1989
***************
*** 93,99
  PROGRAM = bash
  
  # The default primary and secondary prompts.
! PPROMPT = '"${PROGRAM}$$ "'
  SPROMPT = '"${PROGRAM}>"'
  
  # The group of configuration flags.  These are for shell.c

--- 93,99 -----
  PROGRAM = bash
  
  # The default primary and secondary prompts.
! PPROMPT = '"${PROGRAM}\\$$ "'
  SPROMPT = '"${PROGRAM}>"'
  
  # The group of configuration flags.  These are for shell.c
===================================================================
RCS file: RCS/shell.c,v
retrieving revision 1.2
diff -c -r1.2 shell.c
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:58 1989
--- shell.c	Thu Aug  3 17:46:03 1989
***************
*** 67,73
  char *the_current_maintainer = MAINTAINER;
  
  #ifndef PPROMPT
! #define PPROMPT "bash$ ";
  #endif
  char *primary_prompt = PPROMPT;
  

--- 67,73 -----
  char *the_current_maintainer = MAINTAINER;
  
  #ifndef PPROMPT
! #define PPROMPT "bash\\$ ";
  #endif
  char *primary_prompt = PPROMPT;
  
===================================================================
RCS file: RCS/parse.y,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 parse.y
*** /tmp/,RCSt1005909	Thu Aug  3 18:18:02 1989
--- parse.y	Thu Aug  3 17:43:33 1989
***************
*** 1419,1424
  	\h	the hostname
  	\#	the command number of this command
  	\!	the history number of this command
  	\<octal> character code in octal
  	\\	a backslash
  */

--- 1419,1425 -----
  	\h	the hostname
  	\#	the command number of this command
  	\!	the history number of this command
+ 	\$	a $, unless you are root, then a #.
  	\<octal> character code in octal
  	\\	a backslash
  */
***************
*** 1574,1579
  
  	    case '\\':
  	      temp = savestring ("\\");
  	      goto add_string;
  
  	    default:

--- 1575,1584 -----
  
  	    case '\\':
  	      temp = savestring ("\\");
+ 	      goto add_string;
+ 
+             case '$':
+ 	      temp = savestring (getuid () == 0 ? "#" : "$");
  	      goto add_string;
  
  	    default:
Technical Details
Message-ID: <8908032325.AA05980@gibbs.physics.purdue.edu>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!GIBBS.PHYSICS.PURDUE.EDU!ray

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!GIBBS.PHYSICS.PURDUE.EDU!ray
From: ray@GIBBS.PHYSICS.PURDUE.EDU (Ray Moody)
Newsgroups: gnu.bash.bug
Subject: Bash as a root shell (also bug in polite_directory_format)
Message-ID: <8908032325.AA05980@gibbs.physics.purdue.edu>
Date: 3 Aug 89 23:25:07 GMT
Sender: fox-r@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 133