Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: `pwd -P` with systemd-homed causes inconsistent cwd state
- X-seq: zsh-workers 52237
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: kyle@laker.email
- Cc: zsh-workers@xxxxxxx
- Subject: Re: `pwd -P` with systemd-homed causes inconsistent cwd state
- Date: Fri, 20 Oct 2023 21:05:43 -0700
- Archived-at: <https://zsh.org/workers/52237>
- In-reply-to: <f31c3d78-11de-4aac-81d7-c061916a9108@laker.email>
- List-id: <zsh-workers.zsh.org>
- References: <f31c3d78-11de-4aac-81d7-c061916a9108@laker.email>
On Fri, Oct 20, 2023 at 8:18 PM Kyle Laker <kyle@laker.email> wrote:
>
> I have found a strange behavior with ZSH when working with
> systemd-homed. After running `pwd -P` within my home directory, it seems
> as if the current working directory effectively changes to `/`. I am
> currently using ZSH 5.9 and systemd 254.
>
> systemd-homed is configured using a BTRFS subvolume.
This sounds like it must be the same issue as workers/52213 which also
involves doing operations on BTRFS mounts.
> What is unexpected is that after running
> `pwd -P` all other subprocesses act as if the `cwd` is `/`
When you run `pwd -P`, zsh invokes the getcwd() system call and prints
whatever it returns. That's literally all it does. So, although I
don't have BTRFS to test with, this looks from here like a problem
with getcwd() internally changing the process current directory to the
root when crossing a BTRFS link. That would be invisible to $PWD and
therefore to the pwd command (without -P).
There are some cases where zsh itself would change the current
directory, e.g., if the parent of the current directory is removed
from the filesystem and a few other "catastrophic failure" cases, but
zsh would display a warning message in those circumstances and in your
example its happening silently ... another clue that whatever it is,
is behind zsh's back, so to speak.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author