On 11/06/21 at 10:43pm, brainpower wrote:
Am 06.11.21 um 21:34 schrieb Andrew Gregory:
On 11/06/21 at 09:08pm, brainpower wrote:
Am 06.11.21 um 19:15 schrieb Andrew Gregory:
bash thinks it's being run remotely because we connect to the child over sockets.
oh, right, that makes sense... I knew I was missing something rather obvious. :/ (I shouldn't have just skimmed the manpage after all... I missed it b/c I was only looking for the word "interactive", which isn't in that paragraph)
But what I'm still not quite getting is, what's the difference of pacman being run by sudo vs. directly? Shouldn't bash also think the sockets were remote if pacman is not run using sudo?
But it probably can detect somehow that it runs inside a interactive zsh when pacman is run directly, while there is no shell running between sudo and pacman when running it using sudo... or something like that.
Well mystery somewhat solved, thanks for pointing me in the right direction.
I'd guess it's because it also checks for $SHLVL < 2.
It does! I've checked by adding 'Defaults env_keep += "SHLVL"' to /etc/sudoers.
Would it make sense to export/set SHLVL=1 in _alpm_run_chroot() if SHLVL does not exist before executing the shell to make sure its non-interactive?
I've first thought of adding --norc, but I think that's a non standard option not all shells users may configure pacman to use support... Exporting that variable if it does not exist should work with every shell and also should not hurt non-bash shells, I think?
The SHLVL check isn't documented anywhere that I can see, I just happened to find it in bash's source, so it's not something we should rely on. I'd reach out to the bash developer first and see what they say.