私はCentos 6を使用しており、Debian、Ubuntu、Fedoraでshの代替品としてさまざまなシェルとダッシュの実装について読んだ後、Centosのスクリプトシェルでshをダッシュに置き換えることにしました。
私のシステムにshとdashの両方があるので、これが行われたことを確認する方法がわかりません。では、どちらがデフォルトのスクリプトシェルであるかをどうやって知ることができますか?
答え1
次のコマンドを使用してデフォルトのシェルを確認できます。
grep -- "$LOGNAME" /etc/passwd | awk -F":" '{print $7}'
マイコンピュータにsh
リンクがありますdash
。以下を試してください。
ls -l "$(which sh)"
答え2
「スクリプトシェル」はいいえログインシェル。それは何でも実行されます/bin/sh
。多くのBourneシェル派生(sh
Kornシェルに似ている可能性のあるbashやdashなど)は、呼び出し時に異なる動作をします。sh
答え3
Centos(および他のLinuxとunices)では、次のコマンドを実行するときにどのシェルが使用されているかを知ることができます。
$ id
uid=501(john1) gid=1000(groupname1) ....
ユーザーを使用していることを知らせますjohn1
。
$ grep john1 /etc/passwd
john1:x:501:1000:john1,,,:/home/john1:/bin/bash
最後の文字列は、/
ログインシェルが何であるかを示します(この場合は「/bin/bash」)。
ログインシェルを変更するには、ユーザーとしてroot
この文字列を編集できますが、passwd
他の内容は変更しないように注意してください。
グラフィックインターフェイス(GNOMEやKDEなど)がインストールされている場合は、他のグラフィックツールを使用してこの設定を変更できます。
答え4
これを変更する最善の方法は、Centosでusermodを使用することです。
usermod -s /bin/bash username