Bug#1094792: reportbug: Incorrect PATH for snap-installed tools when using SSH command
Package: reportbug
Version: 13.0.2
Severity: important
X-Debbugs-Cc: pravorskyi@meta.ua
When running snap-installed commands (such as "microk8s") via SSH in a non-login shell context, the SNAP-provided /snap/bin path is not added to the PATH environment. This leads to an error such as:
ssh root@server -C "microk8s version"
bash: microk8s --version: No such file or directory
Similarly, the following command also fails:
ssh root@server -C "bash -c 'microk8s version'"
However, running through a login shell works:
ssh root@server -C "bash -l -c 'microk8s version'"
MicroK8s v1.29.13 revision 7598
Additionally, environment checks reveal that /snap/bin is missing in a non-login SSH context:
ssh root@server -C "printenv"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Whereas a login shell includes /snap/bin:
ssh root@server -C "bash -l -c printenv"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Interestingly, systemd’s environment generator does produce the correct PATH (including /snap/bin):
ssh root@server -C "/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
The file /usr/lib/environment.d/990-snapd.conf is present and correctly sets PATH, despite this, the environment is not applied for non-login SSH
commands.
PATH=$PATH:/snap/bin
Impact:
This leads to complications in automated tools (e.g. Ansible’s "command" module), since /snap/bin is not found without manually modifying global /etc/environment or forcing a login shell.
Steps to reproduce:
1. Install snapd and a snap-based tool (e.g. microk8s).
2. Attempt to run the snap command via a non-login SSH command:
ssh root@server -C "microk8s version"
3. Observe "No such file or directory" error.
Expected result:
/snap/bin is in PATH by default for non-interactive SSH sessions, allowing direct usage of snap-installed commands.
-- Package-specific info:
** Environment settings:
EDITOR=editor
INTERFACE=text
** /home/user/.reportbugrc:
reportbug_version "13.0.2"
mode advanced
ui text
realname "Andrii Pravorskyi"
email "pravorskyi@meta.ua"
no-cc
list-cc-me
smtphost reportbug.debian.org
-- System Information:
Debian Release: trixie/sid
APT prefers testing-debug
APT policy: (500, 'testing-debug'), (500, 'testing'), (50, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.12.10-amd64 (SMP w/16 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=uk_UA.UTF-8, LC_CTYPE=uk_UA.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-- no debconf information
Reply to: