Ticket #4634 (new enhancement)

Opened 9 months ago

Last modified 9 months ago

Clean up subshell precmd and PS1 handling

Reported by: zaytsev Owned by:
Priority: major Milestone: 4.8.34
Component: mc-core Version: master
Keywords: Cc: ossi, d3m3t3r
Blocked By: Blocking:
Branch state: no branch Votes for changeset:

Description

Follow-up for #3748:

We want to remove our PS1 / prompt fallbacks for all shells and cleanup fallback precmd handling:

        "_mc_precmd() { "
        "  pwd>&%d; "
        "  kill -STOP $$; "
        "}; "
        "_MC_PRECMD=_mc_precmd; "
        "PS1='$($_MC_PRECMD)'\"${PS1:-'$PWD $ '}\"\n";

to actually answer the question whether PS1 can be unset in the first place: probably not. i mean, it can if you manually unset it, but dash actually shows no prompt at all in this case. so arguably, providing even a minimal PS1 fallback is unnecessary.

It's definitely quite unlikely an interactive shell not setting PS1. The user would need to mess up something. IMO, the default PS1 could be removed from every 'precmd' code if we check all shells cope with empty PS1 reasonably. For bash, you can test it by adding "unset PS1" into .bashrc. It seems to work fine.

Change History

comment:2 Changed 9 months ago by d3m3t3r

Note the PS1 fallback is still present in the proposed code, only now it is '$PWD $ '.
IMHO, this ticket would make the code look a bit simpler and cleaner but many users, e.g. with busybox/ash/dash, will just loose a feature - $HOME prefix in $PWD no longer replaced by '~'. May not be worth it.

https://github.com/MidnightCommander/mc/pull/212

This PR is about *fixing* the existing PS1 fallback, not removing it.

comment:3 Changed 9 months ago by ossi

the point i tried to make previously is that this fallback feature is kinda useless - the user will have set up PS1 to their liking already, because they will want it to be nice even if mc is not used. therefore, we only need to preserve what is already there.

comment:4 Changed 9 months ago by zaytsev

TODO: when adding support for ksh/mksh the tests were not updated! Check that other subshells are listed in tests/lib/mcconfig/user_configs_path.c.

Note: See TracTickets for help on using tickets.