使用しているデフォルトの「シェル」をどのように表示しますか? Unixの場合

使用しているデフォルトの「シェル」をどのように表示しますか? Unixの場合

使用しているデフォルトの「シェル」をどのように表示しますか? UNIXでは、このコマンドは正しいps -p$$ですか、それとも別の方法がありますか?

答え1

$$現在のコースです。

ps -p$$したがって、現在のプロセスが表示されます(この場合はシェル)。

また、することができますecho $SHELL

または

getent passwd | grep ^`whoami`: | awk -F: '{print $NF}'

答え2

デフォルトのシェルを取得するには、$SHELL変数を印刷するだけです。

$ echo $SHELL
/bin/bash

これはPOSIX が定義されていません。、私がテストしたすべてのシェル(ash、bash、dash、fish、csh、ksh、tcsh、zsh)で動作します。

そのコマンドがあなたの環境で機能しない場合は、いつでも確認できます/etc/passwd。たとえば、Linuxシステム(UNIXもあるかもしれませんがわかりません)では、次のようにfooユーザーシェルが提供されます。

grep '^foo:' /etc/passwd | cut -d: -f7

現在実行中のシェルを取得するには、次のものを使用できます。

ps -p $$ | tail -n1 | awk '{print $NF}'

答え3

別の回答に追加します。特定のSHELLをテストするには、次のものを使用できます。

  • 大きな打撃:echo $BASH
  • クッシュ:echo $KSH_VERSION

これらの変数は、実行中の対応するシェルによって設定されます。

関連情報