snapでインストールしたコマンドがzshでPATH通ってない


概要

snapでインストールしたherokuコマンドがzshから使えなかったので、PATHを通した。
それだけ。

経緯

herokuコマンドが無いと言われた。

% sudo snap install --classic heroku
heroku v7.21.0 from Heroku✓ installed

% heroku help
zsh: command not found: heroku

調べたら原因は /snap/bin にPATHが通ってないことがわかった。
bashだとPATH通っている。

  • 再現した環境
% snap version
snap    2.37.2
snapd   2.37.2
series  16
ubuntu  18.04
kernel  4.15.0-1019-aws

対応

/etc/zsh/zprofile の末尾に以下を追記した。

# Expand $PATH to include the directory where snappy applications go.
snap_bin_path="/snap/bin"
if [ -n "${PATH##*${snap_bin_path}}" -a -n "${PATH##*${snap_bin_path}:*}" ]; then
    export PATH=$PATH:${snap_bin_path}
fi

/etc/profile.d/apps-bin-path.sh から抜粋した。

まとめ

snapでインストールしたコマンドがzshでPATH通ってなかったので、PATHを通した。
が、果たしてこの対応が本当に正しいのだろうか。

正しい方法知ってたら誰か教えてほしい。

補足

こういうバグレポートを見つけた。
https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1640514