こんにちは、ソリューションの五十嵐です。
普段はMac純正のターミナルアプリを使用していますが、Hyperというターミナルアプリがおしゃれで気になっていました。
試しにインストールしてみましたが、Hyper上で起動したvimが重い。。。
調べたところによると「.bash_profileで不要なexportが多くなるとlsコマンドが遅くなる」との記事を発見。
これが原因かも、と思いPATHを確認・・・
$ source ~/.bash_profile
$ env | grep PATH
PATH=/Users/igarashi/.cargo/bin:/Users/igarashi/go/bin:/Users/igarashi/Documents/scala/scala-2.12.7/bin:/usr/local/opt/openssl/bin:/Users/igarashi/.rbenv/shims:/Users/igarashi/.rbenv/bin:/usr/local/git/bin:/usr/local/share/npm/bin:/Users/igarashi/.cargo/bin:/opt/local/bin:/opt/local/sbin:/Users/igarashi/.nimble/bin:/Applications/Android/sdk/tools:/Applications/Android/sdk/platform-tools:/Applications/Android/sdk/tools/:/Users/igarashi/.nodebrew/current/bin:/Users/igarashi/.cargo/bin:/Users/igarashi/go/bin:/Users/igarashi/Documents/scala/scala-2.12.7/bin:/usr/local/opt/openssl/bin:/Users/igarashi/.rbenv/shims:/Users/igarashi/.rbenv/bin:/usr/local/git/bin:/usr/local/share/npm/bin:/Users/igarashi/.cargo/bin:/opt/local/bin:/opt/local/sbin:/Users/igarashi/.nimble/bin:/Applications/Android/sdk/tools:/Applications/Android/sdk/platform-tools:/Applications/Android/sdk/tools/:/Users/igarashi/.nodebrew/current/bin:/Users/igarashi/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/opt/ImageMagick/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/git/bin:/Users/igarashi/Library/Android/sdk/tools:/Users/igarashi/Library/Android/sdk/platform-tools:/usr/local/Cellar/imagemagick@6/6.9.9-31/bin:/Users/igarashi/.composer/vendor/bin:/Users/igarashi/.rvm/bin:/Applications/MAMP/bin/php/php5.5.10/bin:/Applications/MAMP/Library/bin:/Users/igarashi/Library/Android/sdk/tools:/Users/igarashi/Library/Android/sdk/platform-tools:/usr/local/Cellar/imagemagick@6/6.9.9-31/bin:/Users/igarashi/.composer/vendor/bin:/Users/igarashi/.rvm/bin:/Applications/MAMP/bin/php/php5.5.10/bin:/Applications/MAMP/Library/bin
GOPATH=/Users/igarashi/go
CPATH=/usr/local/opt/openssl/include:/usr/local/opt/openssl/include:
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:/usr/local/opt/openssl/lib/pkgconfig:
こ、これは・・・
ちょっと試してみようと思ったGoやらScalaやらRustやらNimやらのPATH
一度だけ使ったAndroidSDKのPATH
何故か残っているrvmのPATH
などなど、明らかに不要なPATHがひしめき合っていました。
これが原因とは断定できませんが気持ち悪いので一旦すべてクリアしようと考えました。
まずは.bash_profileでexportしている部分をすべてコメントアウト。
再度source .bash_profile
して結果を確認します。
$ env | grep PATH
PATH=/Users/igarashi/.cargo/bin:/opt/local/bin:/opt/local/sbin:/Users/igarashi/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/opt/ImageMagick/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/git/bin:/Users/igarashi/.rvm/bin
まだ少し残っていますね。
Rustのcargo、ImageMagick、Mono、Wireshark、そしてrvm
/etc/paths.d
を参照してみます。
$ cd /etc/paths.d
$ ls
40-XQuartz ImageMagick Wireshark git mono-commands
git以外は必要なさそうなので削除。
さらに/etc/manpaths.d
も同様に。
再度確認。
$ env | grep PATH
PATH=/Users/igarashi/.cargo/bin:/opt/local/bin:/opt/local/sbin:/Users/igarashi/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/igarashi/.rvm/bin
cargoとrvmが生き残り・・・。
Rust
$ rustup self uninstall
Rustをアンインストールして確認
$ env | grep PATH
PATH=/Users/igarashi/.cargo/bin:/opt/local/bin:/opt/local/sbin:/Users/igarashi/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/igarashi/.rvm/bin
まだ残っているので.bash_profileに以下を追加してPATHを初期化
$ vi .bash_profile
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:"
$ source .bash_profile
$ env | grep PATH
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin::/Users/igarashi/.rvm/bin
Rustは消えましたがrvmが残りました。。。
rvm
まずは.rvmを削除してみることに。
$ rm -rf .rvm
$ env | grep PATH
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin::/Users/igarashi/.rvm/bin
まだ残っているので、「アンインストール時に不備があり、PATHだけ残ったのでは?」と考えました。
そこで、もう一度rvmをインストールしてからアンインストール。
$ curl -sSL https://get.rvm.io | bash -s stable
$ sudo rvm seppuku
$ env | grep PATH
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin::/Users/igarashi/.rvm/bin
変わらず。。。
もう一度.bash_profileを見返してみました。
$ vi .bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
source ~/.profile
・・・これは?
source ~/.profile
$ vi .profile
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
完全に見落としていました・・・。
.profile内を完全に削除して再度確認。
$ source .bash_profile
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
やっとPATHが初期化されました。
まとめ
PATHを掃除してみましたがHyperの動作についてはあまり変化がありませんでした。
それでもPATHが綺麗になったのでひとまずは満足といったところでしょうか。
今後はDockerでそれぞれ開発環境を用意し、ホスト環境を汚染しないようにしようと思います。
今回記事にまとめたPATHについては私が入社した当初、知識も経験も無い状態でネットの情報をそのまま.bash_profileにコピペしたりexportコマンドを実行したことが原因です。
黒い画面が苦手で、とりあえずコマンドをコピペしている方もいると思いますが、私のようにPCが汚れていくことになりますのでexportに限らず、コマンドを理解した上で実行しましょう。
記事取り上げていただいてありがとうございます!