diff --git a/kitty_tests/ssh.py b/kitty_tests/ssh.py index cd38f4847..3c6048742 100644 --- a/kitty_tests/ssh.py +++ b/kitty_tests/ssh.py @@ -176,7 +176,7 @@ env COLORTERM try: expected_login_shell = pwd.getpwuid(os.geteuid()).pw_shell except KeyError: - with suppress(Exception): + with suppress(KeyError): self.skipTest('Skipping login shell detection as getpwuid() failed to read login shell') if os.path.basename(expected_login_shell) == 'nologin': self.skipTest('Skipping login shell detection as login shell is set to nologin') diff --git a/shell-integration/ssh/bootstrap-utils.sh b/shell-integration/ssh/bootstrap-utils.sh index 2af0af167..a12845750 100644 --- a/shell-integration/ssh/bootstrap-utils.sh +++ b/shell-integration/ssh/bootstrap-utils.sh @@ -67,7 +67,7 @@ using_id() { } using_python() { - detect_python && output=$(command "$python" -c "import pwd, os; print(pwd.getpwuid(os.geteuid()).pw_shell)") \ + detect_python && output=$(command "$python" -c "import pwd, os; exec(\"try:print(pwd.getpwuid(os.geteuid()).pw_shell)\nexcept:print(os.environ.get('SHELL')or'/bin/sh')\")") \ && login_shell="$output" && login_shell_is_ok } diff --git a/shell-integration/ssh/bootstrap.py b/shell-integration/ssh/bootstrap.py index 47712ce3b..55f51c789 100644 --- a/shell-integration/ssh/bootstrap.py +++ b/shell-integration/ssh/bootstrap.py @@ -22,10 +22,9 @@ request_data = int('REQUEST_DATA') leading_data = b'' login_shell = os.environ.get('SHELL') or '/bin/sh' try: - login_shell = pwd.getpwuid(os.geteuid()).pw_shell or login_shell + login_shell = pwd.getpwuid(os.geteuid()).pw_shell except KeyError: - with contextlib.suppress(Exception): - print('Failed to read login shell via getpwuid() for current user, falling back to', login_shell, file=sys.stderr) + pass export_home_cmd = b'EXPORT_HOME_CMD' if export_home_cmd: HOME = base64.standard_b64decode(export_home_cmd).decode('utf-8')