gerardog / gsudo

Sudo for Windows
https://gerardog.github.io/gsudo
MIT License
5.21k stars 139 forks source link

Issue: `gsudo` script fails missing `gsudo.exe` in MSYS env #338

Closed KSR-Yasuda closed 7 months ago

KSR-Yasuda commented 7 months ago

Issue Description

In MSYS env, running gsudo command, that refers to the shell script, comes to fail due to gsudo.exe missing.

% gsudo --version
/c/Program Files/gsudo/Current/gsudo: 行 12: ./gsudo.exe: No such file or directory
# `gsudo` command (the shell script one) fails.
# It searches for the binary `gsudo.exe` in the current dir.

% type -a gsudo
gsudo is /c/Program Files/gsudo/Current/gsudo

% sudo --version
gsudo v2.4.3 (Branch.tags-v2.4.3.Sha.7da1395544bc53ecba069ff21c490f4922ce055c)
Copyright(c) 2019-2022 Gerardo Grignoli and GitHub contributors
# `sudo` command (`sudo.exe`) does work expectedly.

% type -a sudo
sudo is /c/Program Files/gsudo/Current/sudo

It looks readlink command is returning nothing for gsudo script path, that is not a symbolic link. Then, it searches in dirname "" or . directory to find nothing.

With -f option to readlink, it works.

--- "a/c/Program Files/gsudo/Current/gsudo"
+++ "b/c/Program Files/gsudo/Current/gsudo"
@@ -8,5 +8,5 @@
 # For better experience (fix credentials cache) in git-bash/MinGw create this wrapper can be added as function in .bashrc:
 #       gsudo() { WSLENV=WSL_DISTRO_NAME:USER:$WSLENV MSYS_NO_PATHCONV=1 gsudo.exe "$@"; }

-thisdir="$(dirname "$(readlink "$0")")"
+thisdir="$(dirname "$(readlink -f "$0")")"
 WSLENV=WSL_DISTRO_NAME:USER:$WSLENV MSYS_NO_PATHCONV=1 "${thisdir}/gsudo.exe" "$@"
% gsudo --version
gsudo v2.4.3 (Branch.tags-v2.4.3.Sha.7da1395544bc53ecba069ff21c490f4922ce055c)
Copyright(c) 2019-2022 Gerardo Grignoli and GitHub contributors

Steps to Reproduce

As above.

Screenshots

Context:

% pacman -Q msys2-runtime
msys2-runtime 3.4.10-5

% cmd version
Microsoft Windows [Version 10.0.22631.3155]
(c) Microsoft Corporation. All rights reserved.
# Windows 11 Pro 23H2

% readlink --version
readlink (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Dmitry V. Levin.
gerardog commented 7 months ago

Thanks for reporting! Fixed in cf887bf98d5d3d90fc1eebc08c7a277afb50cd19 v2.4.4

KSR-Yasuda commented 7 months ago

Thank you!