Macでbashからzshへ乗換え時に読むべきリンク一覧

## 1.状況と目的

自宅マシンではbashからzshに完全に移行したが、出先や会社ではbash環境で作業することがまだ多くある。また世の中もzshを使う人が多くなりbash環境を忘れつつあるかbashまたはzshどちらか片方しか知らない人に「このリンクを読んで」と説明するのも手間なのでリンク集としてまとめ一つの記事にしておく。

## 2.bashの有用なリンク集

2021.07.08
[Bash: .bashrcと.bash_profileの違いを今度こそ理解する｜TechRacho by BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_07_08/66396)

最終更新日 2017年01月
[知らないとrsyncでもハマるシェル初期化 #Linux - Qiita](https://qiita.com/kkam0907/items/d21a775ce250d52b9d0e)

最終更新日 2018年06月
[ログインシェルとインタラクティブシェルと~/.bashrc達の関係 #Bash - Qiita](https://qiita.com/incep/items/7e5760de0c2c748296aa)

[.bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの？ #Bash - Qiita](https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31)

2-1.zshとBashの共通設定

[bash の初期化ファイル .profile, .bashrc, .bash_profile の使い分けと管理方針 - A Memorandum](https://blog1.mammb.com/entry/2019/12/01/090000)

## 3.zshインストール

[Zsh（https://www.zsh.org/）](https://www.zsh.org/)

[ZSH - THE Z SHELL（https://zsh.sourceforge.io/）](https://zsh.sourceforge.io/)

手前味噌な筆者の記事。2020年。ソースビルドする場合。
[Macにzshをインストール #Zsh - Qiita](https://qiita.com/shiro_usagi/items/c2cf5f2d1ed2a86d3e7a)

PATH問題は記事の下の方にリンクを記載した。
現在は
brew install zsh
だけでいいのかもしれない。

brewを使う。
[MacデフォルトのzshからHomebrewで最新のzsh(5.0.2)にしたらめっちゃ便利だったメモ - haya14busa](http://haya14busa.com/homebrew-zsh-to-zsh/)

[初めて Mac で zsh を使う人のためのチュートリアル - mollifier delta blog](https://mollifier.hatenablog.com/entry/2013/02/22/025415)

解説

[Introduction of the ZSH（zshは、tcshやbash等を使っている以下のような症状に悩んでいる人に有効 である。）](https://www.gentei.org/~yuuji/rec/pc/intro-zsh.html)

[zshの設定ファイルの読み込み順序と使い方Tipsまとめ #ShellScript - Qiita](https://qiita.com/muran001/items/7b104d33f5ea3f75353f)

[zshのmanページが15個に分かれてるので解説してみる - mollifier delta blog](https://mollifier.hatenablog.com/entry/20090429/p1)

[zsh-lovers - cuspy wiki（http://grml.org/zsh/zsh-lovers.html の和訳です）](https://www.cuspy.org/wiki/zsh-lovers/)

[第1回　zshで広がる世界 | gihyo.jp](https://gihyo.jp/dev/serial/01/zsh-book/0001)

## 4.bashからzshに乗り換え作業時に見るべきリンク一覧

[Macでbashからzshへお引越しする方法 #Bash - Qiita](https://qiita.com/AirBeans5956/items/6a00443c6118d7d3f5f4)
要点
$ cat .bash_profile >> .zprofile
筆者は　$ cat .bash_profile >> .zshenv が好み。
$ cat .bashrc >> .zshrc

最終更新日2015年なので古い
[とりあえずZshを使えば良いんだろう？（Zshに移行するにあたってやった事。） #Mac - Qiita](https://qiita.com/ktr_type23/items/3eb782f98c7a5f4c60b0)

## 5.zshを拡張し便利にする。

更新:2024/05/02
[.zshrc で zsh をカスタマイズしてみよう。（プラグイン無し）- original-game.com](https://original-game.com/terminal-zsh2/)

2024-02-20
[【ターミナル】入力補完ツールzsh-completionsで快適なzshライフを - 小さなことからこつこつと。](https://bonoponz.hatenablog.com/entry/20240220/1708376400)

最終更新日 2018年
zplugをインストールする。
[Mac標準のbashからzshに変えた時のメモ #Bash - Qiita](https://qiita.com/akashima/items/bdcde778644086533ade)

2023/09/27
zsh-completions
と
zsh-autosuggestions
[macOS の zsh ではこれだけはやっておこう](https://zenn.dev/sprout2000/articles/bd1fac2f3f83bc)

## 6.zshとPATH設定とpath_helperの問題

path_helper問題は、これが答え。
2020-01-22
[zsh: /usr/libexec/path_helperから逃れる方法 2020年版 - Sexually Knowing](https://this.aereal.org/entry/zsh-path-helper)

＞/etc/zprofileを読まないよう設定することもできて、これがおそらく最もポータブルな対処法でありそう。

.zshenvにunsetopt GLOBAL_RCSするだけ。

参考　筆者の過去記事。
[MacOSにおけるPATH変数生成は2つの問題がある。（path_helper問題１） #shell - Qiita](https://qiita.com/shiro_usagi/items/8b220ca2323ea02cd804)

## 7.その他のシェル関連など

シェルスクリプトのechoの移植性の問題に本気で対応する #Bash - Qiita
https://qiita.com/ko1nksm/items/d0b066268cda42ff24eb

[echo コマンドの違いと移植性の問題 - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog](https://fumiyas.github.io/2013/12/08/echo.sh-advent-calendar.html)

＞シェルや OS の違いに依らないポータビリティ(移植性、可搬性) の高いシェルスクリプトを書くには、ポータビリティに問題がある echo を利用してはいけません。代わりに printf を利用しましょう。 shebang を #!/bin/sh にしていたとしても、/bin/sh の実体が何かは OS や設定に依るのでご注意を。

[どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 #ShellScript - Qiita](https://qiita.com/richmikan@github/items/bd4b21cf1fe503ab2e5c#echo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)

Mac OS bash/zsh周りのメモ
https://zenn.dev/omakazu/scraps/38e665630b78ee

## 8-1.消えたリンク（zshとBashの互換性）

Qiitaには他にも以下のような有用な記事があったが消えてしまった。特に上の記事は消えるのであればローカルに保存しておくのだった。持っている人がいたら筆者にください。

（ZshでもBashでも動くfunctionを書くときのストレスを減らそう - Qiita）

（本当は気をつけるべき、内部コマンドと外部コマンドの区別 - Qiita）

## 8-2.zshとBashの互換性　2024年12月追記

作成日時不明
<a href="https://hyperpolyglot.org/unix-shells">Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh - Hyperpolyglot</a>

2013/12/26
<a href="https://rcmdnk.com/blog/2013/12/26/computer-bash-zsh/">BashとZshの違いでのハマりどころ</a>

配列の番号
グロブ展開
typeset/localでの配列の初期化
readの引数
readにReturnを渡した時
(ダブル)クォート
command/builtin

2019年ごろ？
<a href="https://kanasys.com/tech/803">bashとzshの違い。bashからの乗り換えで気をつけるべき16の事柄</a>

bashとzshの16の違い

    bashとzshの制御構文系の違い
    bashとzshの関数定義の違い
    bashとzshのエイリアスの違い
    コラム：クォート
    zshのマルチリダイレクト(Multios)
    コマンドなしリダイレクト入力
    job関係
    算術式と演算子
    条件演算子
    bashとzshのプロンプトの違い
    bashとzshのヒストリ履歴の違い
    bashとzshのプロセス置換の違い
    bashとzshのパラメータ展開
    bashとzshの配列とハッシュ
    bashとzshのシェル変数の違い
    cdコマンド
    bashとzshのライン入力の違い

2023/11/12
<a href="https://zenn.dev/takakiriy/articles/998bd604ac17d1">mac の zsh と Linux/Windows の bash で互換性があるシェルスクリプトの連想配列</a>

## 9.シェルに詳しいko1nksmさんのQiitaの記事

ko1nksmさんの意見と私個人の意見と異なるのは数行しかない優秀な人だと思う。異なるのは運用と業務方針と新人に対してシェルスクリプトの勉強をどこまでやらせるかどうか？たったこれだけかな。

最初にささっと読んだほうがいい記事。
2024年11月
【完全版】歴史でシェルの設定ファイルを理解する - 全POSIXシェル対応 (.profie, .bash_profile, .bashrc, .zprofile, zshrc, etc.) #Bash - Qiita
https://qiita.com/ko1nksm/items/febc5ceb4edb068a682a

二番目に読むといいと思う記事。
2023年06月
【初学者向け】内部コマンドと外部コマンドの違い ～ LinuxとWindowsの話を混ぜて解説するな！ #UNIX - Qiita
https://qiita.com/ko1nksm/items/d67b0f8978557294c4ec

Mac限定で３番目に読むといいと思う記事。
2024年02月
Macでシェルスクリプトを書く人へ 「シェルはbashからzshに変わっていません！今でもbashで動くんだよ！」 #Bash - Qiita
https://qiita.com/ko1nksm/items/59c2e8a7afa969af8212

以上

ダミータグ　Bash Zsh Mac zshrc zshenv Linux