2016-05-02 20 views
0

誰でも私のシステムにどのようなシェルがインストールされているか教えてください。私のシステムで動作しているシェルを確認してください

ユーザ名を使用してシステムにログインすると、最初はbashシェルが表示されますが、後でsudoを実行した後にkornシェルが表示されるためです。

詳しくは下記をご覧ください。

-bash-3.2$ pwd 
/home/w4x2spxt 
-bash-3.2$ echo $SHELL 
/bin/bash 
-bash-3.2$ su - XXXXXXX 
Password: 
You have new mail. 
The Oracle base remains unchanged with value /apps/oracle 
abc0300ab123:/a30/home/XXXXXXX >> echo $SHELL 
/bin/ksh 
+3

「実行中」と「インストール済」は別々の2つのものです。 –

+1

あなたのユーザ名に対して '/ etc/passwd'のシェルを' grep^XXXXXXX/etc/passwd'のようにチェックして、システムにインストールされているすべてのシェルをチェックするには 'cat/etc/shells'を使用してください – ritesht93

+0

ありがとうとても親愛なる。それは本当に理にかなっています。 –

答えて

0
  • あなたのユーザーは、デフォルトのシェルとして/bin/bashを使用しています。

  • ルートはデフォルトシェルとして/bin/kshを使用しています。

デフォルトのシェルはユーザー固有の設定であるため、ユーザー間で異なるものはありません。最後の列を/etc/passwdにチェックして、さまざまな値を驚かせてください。

suを実行すると、ルートとしてログインするように注意してください。ダッシュを追加してsu -と言うと、その環境を持つようにルートプロファイルをロードしています。

+0

ダッシュ " - "は、スッドの間に? –

+0

@BikashKumarBeheraはい。 'man su'から - > _オプションの引数' -'は、ユーザが直接ログインしたときのユーザの予想と似た環境を提供するために使用されます_ – fedorqui

0

環境変数SHELLには、ログインしたユーザーのログインシェルが常に含まれています(/etc/passwdで定義)。

ログイン後にユーザーがシェルを変更した場合など。 exec bashbash)、SHELLはまだログインシェルに展開されます。あなたのケースでは

、ユーザーXXXXXXXは、ログインシェル/bin/kshをかあります

grep '<user_name>' /etc/passwd 

結果と一致します。現在のシェル検索するに

echo $0 

それとも

ps -p $$ 
1

SHELL環境変数は、あなたのログインシェルを提供します。

ユーザ名またはXXXXXXXsuの場合)に記載されているシェルのパス(最後の列)を、のように確認してください:grep ^XXXXXXX /etc/passwd

そのファイルに記載されているシェルは、そのユーザーにログインまたはsuを実行すると、デフォルトのシェルになります。

は、システムにインストールされているすべてのシェルはこれを使用確認するには:ユーザー XXXXXXXに割り当てられているものは何でもシェル始めている

-bash-3.2$ su - XXXXXXX 

cat /etc/shells

+0

シェルが '/ etc/shells '、https://utcc.utoronto.ca/~cks/space/blog/unix/EtcShellsUsageを参照してください。 – cdarke

0

あなたがこれを行うと。su -の場合、これは通常、シェルをログインプロセスとして実行するので、通常のシェルの起動時の初期化(プロファイル、* shrcなど)が得られるため、良いことです。彼らのアカウントが設定されているシェルとは別のシェルを実行すると、おそらくすべてのカスタマイズができなくなるでしょう。

アカウントに関連付けられているシェルは、パスワードデータベースで検索することで確認できます。これは、システムや認証方式の異なる種類の間ではかなり信頼性がある:

su XXXXXXX -c "bash --login" 

または

を:あなたが欲しい念頭に置いて1を持っている場合は、常に他のユーザーとして明示的にシェルを実行することができます
perl -MUser::pwent -le 'print((getpwnam "XXXXXXX")->shell || "/bin/sh")' 

sudo -u XXXXXXX bash --login # if you have sudo privs 

$0を見て、あなたは、現在実行しているシェルのものを見るために:

echo $0 

デフォルトではどのシェルを参照するのかは、$SHELLを参照してください。

関連する問題