Thursday, September 17, 2020

Re: How do you get different $PS1 for /bin/sh and /bin/ksh?

On 17/09/2020 10:40, Tom H wrote:
> On Thu, Sep 17, 2020 at 9:33 AM Ottavio Caruso
> <ottavio2006-usenet2012@yahoo.com> wrote:
>> On 17/09/2020 00:58, Ashlen wrote:
>>> On 20/09/15 05:49PM, Ottavio Caruso wrote:
>>>>
>>>> Maybe it's just because OpenBSD sh is just ksh in disguise or there
>>>> might be other reasons that I obviously don't know.
>>>
>>> Yep, you're right. They share the same inode.
>>>
>>> ls -li /bin/{,k}sh
>>>
>>> 77862 -r-xr-xr-x 3 root bin 613656 Sep 15 12:10 /bin/ksh
>>> 77862 -r-xr-xr-x 3 root bin 613656 Sep 15 12:10 /bin/sh
>>>
>>> sh(1) also attests to this.
>>
>> Thanks but I gave that for granted. My question was about not
>> exporting PS1 to subshells. In theory, it shouldn't be exported but
>> it does get exported if one uses ENV=.kshrc vs sourcing .kshrc.
>
> You've said that you're now sourcing "$HOME/.kshrc" if "SKSH_VERSION" exists.
>
> You could add the sourcing of "$HOME/.shrc" if "$SH_VERSION" exists.
>
> Or you could export ENV and use a case-esac of this kind:
>
> case "$0" in
> *ksh)
> ...
> PS1='\u@\h:\w\$ '
> ;;
> *sh)
> ...
> PS1='${USER}@${HOST}:${PWD}\$ '
> ;;
> esac
>
>

This solves the problem. Thanks.

--
Ottavio Caruso

No comments:

Post a Comment