結論から言うと、zshがデフォルトなのにbashを使おうとしてしまっていたという話。
バージョンなど
OS:MacOS Monterey
% python -V
Python 2.7.18
%pyenv --version
pyenv 2.3.2
% which python
/usr/bin/python
pyenv global 〇〇とすればバージョンの変更はできるものの、ターミナルを再起動するとまたもとに戻ってしまう。
bash_profileやbashrcには次のように記載済み。色んな所に載っている情報をただコピペしていただけなので、これが何を指し示しているかよくわかっていなかった。
#bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
#bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
デフォルトのログインシェルがzshになっていた
bashではなくzshが動いているから自動で読み込みが出来ていなかった。

#.zprofileがなかったので作成
%touch ~/.zprofile
#zprofileに記述
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
ターミナルを再起動すると問題なくバージョンが切り替わっていた。
% python -V
Python 3.8.4
%which python
~/.pyenv/shims/python
そもそもbashとかzshってなによ
ターミナルを開いた時、一番上に
Last login: Mon Jul 4 22:52:55
みたいなのが表示されます。この段階でログイン処理が行われていて、その時動くプログラム(シェル)をログインシェルと呼び、bashやzshはこのログインシェルにあたるようです。
デフォルトで動くのがbashの場合はbash_profileがログイン時に呼ばれます。私がもともと設定していた状態では、bash_profile実行中にbashrcを呼び出してpyenvの環境変数を設定していたようです。そしてOSのアップグレードによって?デフォルトのログインシェルがzshになっていたので動かなかったということでした。ネットを見てるとbash_profileとbashrcについて書かれているものが多かったので、それをそのまま鵜呑みにしてしまった結果ですね。反省。
zshrcとzprofileについて
調べて見ると.zshrcという設定ファイルに環境変数の設定などを行うことが多い様子。確かにzshrcに書き込んでも問題なくpythonのバージョンは変更されていました。zprofileというファイルはログインシェルの場合に一度だけ呼ばれるらしいので、こちらに書き込んでも問題はなさそう?ひとまずこちらにpyenvの環境変数設定を記述しておき、なにか問題があればzshrcに移行しようと思います。
試しにzprofileとzshrcに
#zprofile
echo 'zprofile'
#zshrc
echo 'zshrc'
このようにecho文を記載し、ターミナルを再起動すると

どちらの設定ファイルもログインシェルの時に実行が確認できた。ということはどちらも起動時に読み込んでいるということなので、どちらに記述するでも良さそう。
まとめ
ログインシェルがbashのときはbash_profileとbashrcに、zshのときはzshrc(zprofile)にそれぞれ環境変数の設定を記載する。
普段シェルを書くことがほとんどないのでまたしばらくしたら忘れてそう。
【参考サイト】


