On 15/09/2020 14:44, Vincenzo Nicosia wrote:
> On Tue, Sep 15, 2020 at 02:08:16PM +0100, Ottavio Caruso wrote:
>> Hi,
>>
>> I have this in ~/.kshrc :
>>
>> PS1="\u@\h:\w\$ "
>>
>> which works fine in ksh:
>>
>> oc@OpenBSD:~$
>>
>> However, if I open a sh subshell, I get:
>>
>> \u@OpenBSD:\w$
>>
>> which is not very nice. The only hack I've found is to append this to
>> ~/.profile:
>>
>>
>> if [ -n "$KSH_VERSION" ]; then
>> if [ -f "$HOME/.kshrc" ]; then
>> . "$HOME/.kshrc"
>> fi
>> fi
>>
>> I wonder if there is a more elegant solution.
>
> Hi,
>
> the more elegant solution is to set ENV appropriately. ~/.profile is
> normally read only at login, while sub-shells will source whatever
> file is specified in ENV.
This is what I had and it generated the undesired prompt in sh.
You probably mean "interactive shells", not just sub shells. A sub shell
could be child of a non login shell as well.
With ENV=~/.khsrc, PS1 is propagated over to sub shells, whether it is
ksh or sh, whereas just sourcing ./.khsrc will not export PS1. I don't
know why this is. It doesn't make sense to me. Maybe it's just because
OpenBSD sh is just ksh in disguise or there might be other reasons that
I obviously don't know.
--
Ottavio Caruso
No comments:
Post a Comment