*Synopsis*: ksh93 has strange default PS1

CR 6913851 changed on Jan 5 2010 by <User 1-1SURPB>

=== Field ============ === New Value ============= === Old Value =============

Public Comments        New Note                                               
====================== =========================== ===========================

     
*Change Request ID*: 6913851

*Synopsis*: ksh93 has strange default PS1

  Product: solaris
  Category: shell
  Subcategory: korn93
  Type: Defect
  Subtype: 
  Status: 1-Dispatched
  Substatus: 
  Priority: 4-Low
  Introduced In Release: 
  Introduced In Build: 
  Responsible Engineer: 
  Keywords: 

=== *Description* ============================================================
$ env - ksh93
$ echo $PS1                                   
%s" COLUMNS "" printf "%...@%s:" "${LOGNAME}" "$(/usr/bin/hostname)" ellip="${ 
[[ "${LC_ALL}/${LANG}" == ~(Elr)(.*UTF-8/.*|/.*UTF-8) ]] && printf "\u[2026]
" || print "..." ; }" p="${PWD/~(El)${HOME}/\~}" (( ${#p} > 30 )) && print -r 
-n -- "${ellip}${p:${#p}-30:30}" || print -r -n -- "${p}" [[ "${LOGNAME}" == 
"root" ]] && print -n "# " || print -n "\$ " )

$ set | grep PS1                              
PS1=$'$(set +o xtrace +o errexit\n                printf "%*s\\r%s" COLUMNS 
""\n                printf "%...@%s:" "${LOGNAME}" 
"$(/usr/bin/hostname)"\n\t\tellip="${\n\t\t\t[[ "${LC_ALL}/${LANG}" == 
~(Elr)(.*UTF-8/.*|/.*UTF-8) ]] &&\n\t\t\t\tprintf "\\u[2026]\\n" || print "..." 
; }"\n\t\tp="${PWD/~(El)${HOME}/\\~}"\n\t\t(( ${#p} > 30 )) &&\n\t\t\tprint -r 
-n -- "${ellip}${p:${#p}-30:30}" ||\n\t\t\tprint -r -n -- "${p}"\n\t\t[[ 
"${LOGNAME}" == "root" ]] && print -n "# " || print -n "\\$ "\n\t\t)'

$ uname -a
SunOS xylabtecra 5.11 snv_130 i86pc i386 i86pc

With LOGNAME not set:

@xylabtecra:~/export/home/mj162486

*** (#1 of 1): 2010-01-04 09:29:04 GMT+00:00 <User 1-1SURPB>


=== *Public Comments* ========================================================
OpenSolaris ksh93 project lead Roland Mainz says:

The PS1 value reported in this bug is set in /etc/ksh.kshrc to provide
an user-friendly machine-wide default (see PSARC 2006/587). ksh93 itself
defaults to '$ ' as defined in the standard (using /etc/ksh.kshrc to set
PS1 allows us to both be standard-conformant and be user-friendly...  :-) 
).

Or short: This is not a bug.

*** (#1 of 5): 2010-01-05 03:37:41 GMT+00:00 <User 1-5Q-1267>

Well it is bug. There are at least two mistakes I see:

1) LOGNAME is not set in default enviroment, and the prompt looks as showed in 
description then

2) there is misleading ~ between : and <pwd> - the replacement of HOME does not 
work:

@xylabone:~/var$ pwd                                                            
/var

I will not study that overcomplicated setting to find the reason for 2), 1) is 
probably separate CR.

*** (#2 of 5): 2010-01-05 09:06:03 GMT+00:00 <User 1-1SURPB>

The reason for misleading ~ in

@xylabone:~/var$ pwd                                                            
/var

is probably that your $HOME is not set because you used env - ksh93 (correct me 
if I'm wrong).

But the PS1 is wrong anyway, for example if
HOME=/ab
PWD=/abc/de

it will show ~c/de as your path which is wrong.

To fix both issues (empty $HOME and HOME being part of PWD), replace this:
p="${PWD/~(El)${HOME}/\\~}"
with this:
case "$HOME" in ?*)p="${P/~(El)${HOME}(\/|$)/\~\1}";;*)p=$P;;esac

Oh yes, now someone tell me that perl is unreadable :)

*** (#3 of 5): 2010-01-05 10:07:40 GMT+00:00 <User 1-PWPBN>

Shorter version of my fix without using 'case'
p=$P;[[ -n $HOME ]]&&p="${P/~(El)${HOME}(\/|$)/\~\1}"

*** (#4 of 5): 2010-01-05 10:10:29 GMT+00:00 <User 1-PWPBN>

Small note - how long will we have it? :-)

As additional note - could be LOGNAME==root separated in kshrc and not 
evaluated every time? Maybe also other parts of PS1 (like ellip) as it is 
wasting of performance to evaluate it for every line input, isn't it?

*** (#5 of 5): 2010-01-05 10:19:52 GMT+00:00 <User 1-1SURPB>


=== *Workaround* =============================================================

=== *Additional Details* =====================================================
        Targeted Release: 
        Commit To Fix In Build: 
        Fixed In Build: 
        Integrated In Build: 
        Verified In Build: 
  See Also: 6913823
  Duplicate of: 
  Hooks:
        Hook1: 
        Hook2: 
        Hook3: 
        Hook4: 
        Hook5: 
        Hook6: 
  Program Management: 
  Root Cause: 
  Fix Affects Documentation: No
  Fix Affects Localization: No

=== *History* ================================================================
        Date Submitted: 2010-01-04 09:29:03 GMT+00:00
        Submitted By: <User 1-1SURPB>

        Status Changed    Date Updated                  Updated By


=== *Service Request* ========================================================
        Impact: Limited
        Functionality: Primary
        Severity: 3
        Product Name: solaris
        Product Release: osol_2009.06
        Product Build: osol_2009.06
        Operating System: snv_130
        Hardware: x86
        Submitted Date: 2010-01-04 09:29:04 GMT+00:00


=== *Multiple Release (MR) Cluster* - 0 ======================================

Reply via email to