使用しているデフォルトの「シェル」をどのように表示しますか? 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
これらの変数は、実行中の対応するシェルによって設定されます。