Posted at

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