macosコマンド

Macのターミナル(shell)でbashからzshや他のシェルに変更する方法

こんにちは!今回はmacでターミナルを起動した時にbashを使いたいのにzshになっていてbashコマンドや他のshellコマンドが使えなくて困っている為の解決方法を書きます。

Mac OSがCatalinaにアップデートすると標準のターミナルがbashからzshに変更されました。

僕のターミナルはbashに戻してあるのですが、zshから使い慣れたbashに戻したい人も多いと思います。

下のコマンドを打つと現在使っているshellがわかります。

echo $SHELL

ピンク色はユーザー情報です。

ターミナル最上部に現在のシェル名が書いてあります。この場合はbashです。

($echo $SHELLと打たなくても確認できますね笑)

bashからzshに戻す例

chsh -s /bin/zsh
Macのシェルを変更するにはchsh(change shell)コマンドを使います。途中でパスワードを聞いてくるので入力して下さい。一通り終わったらターミナルを再起動すれば変更が適用されます。
最上部の文字がzshになっているのが分かります。

変更可能なシェルの確認

cat /etc/shells

このコンピュータではbash.csh.dash.ksh.sh.tcsh.zshなどが使えます。

以下は補足となります。

zshってなに?

zsh(Z Shell)は、Unixのシェルの一つで、bash(Bourne-Again SHell)のようなコマンドラインインターフェイスです。Paul Falstadによって最初に開発されたもので、1990年に最初のリリースがありました。

zshは、bashや他の標準的なシェルと多くの類似点を持っていますが、数々の強力な機能とカスタマイズが可能なプロンプトなど、いくつかの独自の特徴を提供しています。

以下は、zshのいくつかの特徴です:

  • 自動補完:コマンド、オプション、ファイル名などを素早く入力するための強力な自動補完機能。
  • 拡張グロブ:より複雑なパターンマッチングが可能になる強化されたワイルドカードのサポート。
  • プロンプトのカスタマイズ:プロンプトの見た目や機能を高度にカスタマイズできます。
  • 共有履歴:異なるターミナルウィンドウ間でのコマンド履歴の共有。
  • モジュール拡張:異なる機能を追加するためのモジュールシステム。

zshは、特に開発者やシステム管理者に人気があります。macOS Catalinaからは、デフォルトのシェルとして採用されています。自動補完やプロンプトのカスタマイズなどの強力な機能により、効率的な作業が可能になっています。

bashってなに?

bashは、"Bourne-Again SHell"の略で、Unix システムで広く使用されるコマンドラインインターフェイスです。シェルは、ユーザーがコンピューターと対話するためのインターフェイスで、コマンドを解釈して実行する役割を果たします。

bashは、1979年にスティーブン・ボーンによって作成されたBourne Shellの後継として、1989年にブライアン・フォックスによって開発されました。多くのLinuxディストリビューションとmacOSでデフォルトのシェルとして使用されています。

bashは、コマンドライン操作だけでなく、スクリプトの記述にも使われます。このスクリプトは一連のコマンドをまとめて自動実行するもので、システム管理やプログラミングにおいて非常に有用です。

cshってなに?

csh(C Shell)は、UnixおよびUnixライクなオペレーティングシステム用のコマンドラインシェルです。1978年にBill Joyによって開発されました。名前の"C"は、シェルの構文がプログラミング言語Cに似ていることから来ています。

以下は、cshのいくつかの特徴です:

  • Cプログラミング言語に似た構文:このシェルのスクリプト構文はC言語に似ているため、Cプログラマーにとって親しみやすいものとなっています。
  • 別名作成:よく使用するコマンドの短いエイリアスを作成できます。
  • ジョブ制御:バックグラウンドでのプロセス実行などのジョブ制御が可能です。
  • 履歴機能:前に入力したコマンドを簡単に参照できる履歴機能。

cshは当初BSD Unixで開発され、その後他のUnixシステムにも広がりました。一方で、cshはスクリプト作成にはいくつかの問題を抱えているとされ、後のシェルで改善される部分もありました。例えば、エラー処理が不足しているため、大規模なスクリプトの開発には適していないという意見もあります。

現代の多くのシステムでは、tcsh(ティーシーシェル)と呼ばれるcshの拡張版が使用されています。tcshcshの機能に加え、コマンドラインの編集、コマンドのスペルチェック、より改善された履歴機能などを提供しています。

dashってなに?

dash(Debian Almquist Shell)は、UnixおよびUnixライクなオペレーティングシステムで使用されるコマンドラインシェルの一種です。dashはAlmquist Shell(ash)のDebian版として知られており、軽量で高速な動作が特徴です。

以下はdashの主な特徴です:

  • 軽量: dashは非常に小さく、シンプルな設計であるため、起動が速く、リソースをほとんど消費しません。
  • POSIX準拠: dashはPOSIX標準に準拠しているため、標準的なシェルスクリプトを実行できます。
  • 効率的: dashbashよりも軽量であるため、スクリプトの実行が速く、システムの起動プロセスなどで効率的に動作します。

dashは特にDebian系のLinuxディストリビューションで一般的で、デフォルトのシステムシェルとして使用されることもあります。システム起動スクリプトなどの実行において、その軽量性と効率が重要な役割を果たします。

一般的なコマンドライン作業には向いているものの、bashなど他のシェルに比べて機能は限定されています。対話的な使い勝手や高度なプログラミング機能を求める場合、他のシェルを選ぶことが一般的です。

kshってなに?

ksh(KornShell)は、UnixおよびUnixライクなオペレーティングシステム用のコマンドラインシェルで、1980年代初頭にAT&Tベル研究所のデビッド・コーン(David Korn)によって開発されました。

kshは、Bourne Shell(sh)の拡張として始まり、C Shell(csh)のいくつかの便利な機能を組み込みました。以下は、kshの主な特徴です:

  • プログラミング機能: 配列、関数、演算子のオーバーロードなど、高度なプログラミング機能を提供します。
  • 対話的なコマンド編集: コマンドラインで直接コマンドを編集できる機能。
  • エイリアスと関数: コマンドのエイリアスや関数を定義することができます。
  • ジョブ制御: バックグラウンドでのプロセスの実行や管理が可能です。
  • 履歴機能: 以前に実行したコマンドを保存し、簡単に再実行することができます。
  • POSIX準拠: POSIX標準に準拠しているため、移植性が高いです。

kshは、プロフェッショナルなシステム管理者や開発者にとって人気のある選択肢で、スクリプト作成や対話的な使用において強力な機能を提供します。多くのUnixシステムで使用可能で、商用バージョンとオープンソースバージョン(ksh93など)が存在します。

shってなに?

shは、Unixシェルの一つで、シンプルなコマンドラインインターフェイスとプログラミング言語を提供します。正式には"Bourne Shell"と呼ばれ、1970年代にAT&Tベル研究所のスティーブン・ボーン(Stephen Bourne)によって開発されました。

以下は、shの主な特徴です:

  • コマンドの解釈: ユーザーが入力したコマンドを解釈し、適切なプログラムやスクリプトを実行します。
  • スクリプト実行: 一連のコマンドをファイルに記述し、スクリプトとして実行できます。これにより、自動化やバッチ処理が可能になります。
  • ジョブ制御: 複数のプロセスの管理やバックグラウンドでの実行ができます。
  • パイプライン: 複数のコマンドを連鎖させ、一方のコマンドの出力を他方の入力とするパイプラインが構築できます。

shは、Unixの初期から存在しており、Unixの哲学に基づいてシンプルに設計されています。そのため、最小限のリソースで動作し、様々なシステムでの互換性があります。

多くの後継シェル(bashkshzshなど)は、shの基本的な機能に追加機能を加えています。現代の多くのシステムでは、shは通常、bashdashなどの他のシェルへのシンボリックリンクとして存在し、完全な互換性を提供します。

tcshってなに?

tcsh(ティーシーシェル)は、UnixおよびUnixライクなオペレーティングシステム用のコマンドラインシェルで、C Shell(csh)の拡張バージョンです。Ken Greerがメインの開発者で、1980年代に登場しました。

tcshは、cshから数多くの改善と追加機能をもたらしています。以下は、tcshの主な特徴と機能です:

  • 対話的なコマンドライン編集: カーソルキーを使ってコマンドライン上で直接コマンドを編集できます。
  • 強化された履歴機能: 以前に実行したコマンドの履歴を保存し、簡単に参照や再実行が可能です。
  • エイリアス: よく使う長いコマンドに対して短い名前を割り当てることができます。
  • ファイル名の補完: タブキーを押すことでファイル名やディレクトリ名を自動的に補完することができます。
  • プロンプトのカスタマイズ: シェルプロンプトの見た目を自分の好みに合わせてカスタマイズできます。
  • ジョブ制御: バックグラウンドでプロセスを実行したり、一時停止したりすることができます。
  • スクリプト機能: 一連のコマンドをスクリプトとして記述し、自動化することができます。

tcshは、cshの不足していた多くの機能を補うとともに、より使いやすくしています。このため、一部のユーザーにとってはお気に入りのシェルになっているかもしれません。しかし、スクリプトの書き方が他のシェル(特にBourne互換のシェル)と異なるため、スクリプトの移植性には注意が必要です。

↑↑以上、補足情報でした。

これからどのように使うのかなどの解説をしていく予定です。最後までお読みいただきありがとうございました!

-macosコマンド