Open pedromarquetti opened 2 years ago
Looks like, when you do su <user>
either
$HOME
is set to /root
or$XDG_CACHE_HOME
, $XDG_CONFIG_HOME
and $XDG_DATA_HOME
are set to /root/<subdir>
and when using su <user>
, /root
is not writable and /home/<user>/Git/zsh-snap
is not readable.
Can you try doing su -m user
? Does that solve the problem?
Can you try doing
su -m user
? Does that solve the problem?
It does solve the problem, it doesn't try to write to /root/, but then znap + auto-complete and auto-suggestions is not loaded.
Does it give any error messages?
No. It only shows the default phlm%
prompt.
Do you think it's some misconfiguration? I could also send some log files (the ones that were able to be written)
Also, just to add, if I comment out znap source marlonrichert/zsh-autocomplete
from .zshrc, the infinite loop doesn't happen, but it still gives the permission denied error that I mentioned
Before doing su
, can you put set -vx
in your .zshrc
file (before sourcing Zsh Autocomplete) and share the output here in a file?
Ok, so I don't understand why set -xv >/tmp/zsh.log
is not working when doing sudo su
> su phlm
, I had to manually copy my terminal.
The log i got after doing su
with zsh-autocomplete, there's an long loop there, i had to su phlm
to stop it.
zsh-autocomplete.log
The log I got after I ran su
without zsh-autocomplete sourced:
zshrc.log
Hope this helps
Your zsh-autocomplete.log is 0 KB. Did your upload fail somehow?
What happens if, instead of using znap source
to start Zsh Autocomplete, you use just source
?
Your zsh-autocomplete.log is 0 KB. Did your upload fail somehow?
Now it uploaded correctly zsh-autocomplete.log, I did su phlm
at the end to stop the loop.
What happens if, instead of using
znap source
to start Zsh Autocomplete, you use justsource
?
If I do source ~/Git/zsh-autocomplete/zsh-autocomplete.plugin.zsh
, same loop occurs
Can you comment out most of the things in your .zshrc
and leave only the minimum that’s necessary to reproduce the bug? Then share your debug output here again.
I commented out everything and did the test 4 times:
no-autocomplete with set -vx after sourcing znap.zsh no-autocomplete and set -vx before sourcing znap.zsh with autocomplete enabled, with set -vx after sourcing znap.zsh autocomplete enabled and set -vx before sourcing znap.zsh
What is "XDG_CACHE_HOME", "XDG_CONFIG_HOME" and "XDG_DATA_HOME" used for? I added
export XDG_CACHE_HOME=$HOME/.cache export XDG_CONFIG_HOME=$HOME/.config export XDG_DATA_HOME=~/.local/share
At the beginning of my .zshrc and no errors or infinite loops occur
OK, thanks. That’s a good clue.
In your .zshrc
, before setting or exporting those, can you add
print -lr "${(q+)HOME}" "${(q+)XDG_CACHE_HOME}" "${(q+)XDG_CONFIG_HOME}" "${(q+)XDG_DATA_HOME}"
and share the output here?
/home/phlm '' '' '' ~ $ sudo su [sudo] password for phlm: ~ # su phlm /home/phlm /root/.cache /root/.config /root/.local/share
OK, so, for some reason, when you expand your user's privileges with su
, then $XDG_CACHE_HOME
, $XDG_CONFIG_HOME
and $XDG_DATA_HOME
get set. You need to disable this somehow.
Can you check the following files and see if they get set somewhere in there?
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
/etc/zlogout
Zsh has its own zsh
folder inside /etc/
, with
-rw-r--r-- 1 root root 344 Feb 12 2022 zlogin
-rw-r--r-- 1 root root 58 Feb 12 2022 zlogout
-rw-r--r-- 1 root root 264 Feb 12 2022 zprofile
-rw-r--r-- 1 root root 623 Feb 12 2022 zshenv
-rw-r--r-- 1 root root 3900 Feb 12 2022 zshrc
all of the files insite /etc/zsh
are unchanged, and XDG variables do not get set in any of them
What needs to be done is
Pull requests welcome. 🙂
@marlonrichert Should I close this issue?
I discovered my problem was in how i switched users:
if i use sudo -i
to switch to root user and use exit
to go back + if i switch to a less privileged user with su
Describe the bug
I just started using znap, followed the basic dotfiles usage for my (phlm) and root users, but when I
$ sudo su
then# su phlm
, some "zf_mkdir" errors appear, followed by an infinite autocomplete loopSteps To Reproduce
Expected behavior
Normal switch between root user and my user with
sudo su
andsu <my user>
Observed behavior
Currently, when I
su <my user>
after doingsudo su
, apparently my shell is trying tomkdir /root/.local
(even though I just switched to my non-root user with su), see log belowClick to expand
Environment:
Additional context
I used Oh My Zsh previously and it was working fine with only zsh-autocomplete, zsh-autosuggestions and zsh-syntax-highlighting, I wanted to change to zsnap for being light-weight. I'll include my zshrc, but I changed it multiple times, still the same result...
My .zshrc
Am I doing something wrong?