Re: $PWD expanding to incorrect value Podman run command
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- May 9, 2024, 21:32 UTC
- Message-ID
- <Zj1A8MsBRejNm_IF@tapette.crustytoothpaste.net>
- In-Reply-To
- <21209940.11022921.1715263583414@email.ionos.com>
On 2024-05-09 at 14:06:23, dev@dev.maltese.cc wrote:
Show 19 quoted lines
> Thank you for filling out a Git bug report!
> Please answer the following questions to help us understand your issue.
>
> What did you do before the bug happened? (Steps to reproduce your issue)
> Installed podman and executed: "$ podman run -p 8081:80 -v
> $PWD:/usr/share/nginx/html nginx"
>
> What did you expect to happen? (Expected behavior)
> Expected the nginx image to run and map the current directory to the
> '/usr/share/nginx/html' directory.
>
> What happened instead? (Actual behavior)
> Received the error "Error: invalid container path "\\Program
> Files\\Git\\usr\\share\\nginx\\html", must be an absolute path".
>
> What's different between what you expected and what actually happened?
> I expected the docker $PWD (or ${PWD} or $(pwd) or $HOME) to expand to the
> actual working directory, but it seems to expand to the directory of the
> gitbash executable.This isn't really a Git bug; it's more of a difference with how the MSYS2 runtime shipped with Git for Windows works. Note that the Git project doesn't ship binaries or any software other than Git itself; Git for Windows is the distributor of that and can be reached at https://github.com/git-for-windows/git.
However, the reason you're seeing this is because most programs on Windows don't accept the Unix-style paths that MSYS2 and Git Bash provide, so to placate them, Git Bash converts paths that start with a slash into Windows-style paths. The root directory for Git Bash is the Git installation directory, so when you write `/usr/share/nginx/html`, Git Bash turns that into `C:\Program Files\Git\usr\share\nginx\html`. The `$PWD` is not necessarily related here, although it may undergo the same expansion.
If you don't want that behaviour, then you can use a double slash (e.g., `//usr/share/nginx/html`), or you can set `MSYS_NO_PATHCONV=1`, like so:
MSYS_NO_PATHCONV=1podman run -p 8081:80 -v $PWD:/usr/share/nginx/html nginx
Note that you probably _do_ want `$PWD` to undergo expansion with MSYS, though, so you may want to do this instead (untested):
MSYS_NO_PATHCONV=1podman run -p 8081:80 -v "$(cygpath -w "$PWD"):/usr/share/nginx/html" nginx
If you have more questions about this, I'd reach out to the Git for Windows folks.
-- brian m. carlson (they/them or he/him) Toronto, Ontario, CA