私はmacOSを使用していますが、Bash 3.2が付属しているので、homebrewを介して4.4にアップグレードしました。起動コマンドを次のように設定して、最新バージョンを使用するように端末を設定しました。
/usr/local/bin/bash -l
script
最近、ターミナルセッションを録音して再生するためのコマンドで遊んで、Bash 3.2を使用していることがわかりました。
設定するとexport SHELL=/usr/local/bin/bash
問題が解決しますが、設定を推奨するかどうか疑問に思います。私の考えではこれは望ましくないかもしれません。いいえSHELL
設定するには、環境変数に基づいて何を決定するのかわかりません。
答え1
環境変数の一般的な意味SHELL
は、ユーザーが好む対話型シェルです。特定の構文(Bourneのようにする必要はありません)があり、特定のコマンドライン構文(たとえば、サポートする必要があります-c
。SHELL
SHELL
テキストモード(テキストコンソールまたはSSH経由)でログインすると、次のような結果が得られます。ログインシェルユーザーデータベースに一覧表示されます(例/etc/passwd
:)。 GUI環境で端末を開くときにSHELL
環境変数が設定されていると、環境変数で指定されたシェルが表示されます。テキストモードログインに同じシェルを使用するには、chsh
ログインシェルを使用または変更します。ログインシェルをお気に入りのシェルに切り替えます。exec
。
$SHELL -c
sh -c
時には、コードを実行するのではなく、sh構文を使用するプログラムに会うことがあります。しかし、このような状況は非常にまれです。技術的には、これはPOSIXで許可されていますが、歴史的使用法に違反しています。実際、設定はSHELL
安全です。私はログインシェルを設定しており、約20年間ほとんどの/bin/sh
コンピュータにSHELL
設定してきました。/path/to/zsh