みなさん、こんにちは!はむさんです。
今回は、受講生の方から寄せられたご質問で、『zsh から bash に切り替える方法を教えてください。』 というご質問を頂きましたので、これに回答していきたいと思います。
ところで、皆さんは、shell は何を使われていますか?
macOS では、標準で使用する shell は macOS Catalina からは、bash から zsh に変更となりました。 そこで、この質問を頂きました。
Linux の方は標準では bash になるので、zsh から bash へ切り替える方法について分からなくて悩んでいるという方はいないんじゃないかなって思いますけれども、mac ユーザーの方で bash の操作に慣れている人にとっては、zsh ではなくて bash の方が良いから元に戻したいということだと思います。
ちなみに、ツイッターで不特定の方向けに、あなたの好きなシェルはなんですか?聞いてみたところ、 bash がなかなかの人気があるという結果が得られました。
Which SHELL do you love?#bash #dash #zsh #fish #Linux #macOS #駆け出しエンジニアと繋がりたい
— はむさん (@diveintohacking) October 15, 2021
ということで、では、早速ご紹介しています。
mac はデフォルトのシェルは zsh です。echo
コマンドで SHELL という環境変数を覗くことで確認できます。
% echo $SHELL /bin/zsh
SHELL
というのは環境変数のことですね。
この環境変数は、他にもいろいろなものが設定されていて、それを保持しています。
他はどういうのがあるかっていうと、 env
コマンドというのを実行することで全ての環境変数を確認することができます。
% env TMPDIR=/var/folders/bx/s79rcl5j7q7_9b_f53pw5vfw0000gn/T/ __CFBundleIdentifier=com.apple.Terminal XPC_FLAGS=0x0 TERM=xterm-256color SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.xsXjkV5QVJ/Listeners XPC_SERVICE_NAME=0 TERM_PROGRAM=Apple_Terminal TERM_PROGRAM_VERSION=440 TERM_SESSION_ID=3B0898B2-C458-4058-AB2C-49FFA75FD7E6 SHELL=/bin/zsh HOME=/Users/ham LOGNAME=ham USER=ham PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin SHLVL=1 PWD=/Users/ham OLDPWD=/Users/ham LANG=ja_JP.UTF-8 _=/usr/bin/env
実は、この中にSHELLっていう変数がいるんですよね。
で、話を元に戻して、SHELLに設定されているのがloginシェルなんですね。
zsh から bash に切り替えるには、chsh
コマンドで次のように実行します。
% chsh -s /bin/bash Changing shell for ham. Password for ham:
control + d でlogoutしてあげて、command + w でターミナルを終了させます。
で、改めて、terminalをひらきます。
ログインシェルが切り替わったので、ターミナルを落として再起動します。
Last login: Thu Oct 14 23:28:19 on ttys000 The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050.
で、bashに切り替わっているかを確認しましょう。
Hamnomakku:~ ham$ echo $SHELL /bin/bash
bash に切り替わっていることが分かります。
https://support.apple.com/kb/HT208050
しかし、なんかえらい長いメッセージが表示されているのが鬱陶しいです。こちらのメッセージにもあるように、この URL で確認してみると、こう書いてあります。
macOS Catalina が別のシェルを使う設定になっている場合に bash シェルを呼び出すと、デフォルトのインタラクティブシェルは zsh になっているというメッセージが表示されます。この警告を非表示にするには、以下のコマンドを「~/.bash_profile」または「~/.profile」に追加できます。
export BASH_SILENCE_DEPRECATION_WARNING=1
なんと、デフォルトのインタラクティブシェルはまだ zsh
のようですね。
export BASH_SILENCE_DEPRECATION_WARNING=1
を設定する必要があるとのことです。
$ ls ~/.bash_profile ls: /Users/ham/.bash_profile: No such file or directory
しかしながら、このファイル、存在しないので、ファイルを作ってあげます。これにはtouch
コマンドで作成します。
$ touch ~/.bash_profile
で、このファイルを開きます。
$ open ~/.bash_profile
で、この export の文をコピペして、.bash_profile
一番最後の行に追加すれば良いです。
export BASH_SILENCE_DEPRECATION_WARNING=1
では、改めて、ターミナルを開いてみましょう。
Last login: Thu Oct 14 23:29:58 on ttys000 Hamnomakku:~ ham$
はい、するとこのように、わちゃわちゃ言ってこなくなりました。
このような感じで、bash に切り替えることができました。
はい、今回は bash に切り替える方法について紹介しましたが、実は、切り替えられる shell は他にもたくさんあります。
$ less /etc/shells
を実行することで、切り替えができる shell の一覧を覗くことができます。
自分は、csh がいい!とか dash がいいとか!個人的な preference があれば、そのシェルに切り替えられます。