如何在沒有root的權限下修改預設shell - Linux

Table of Contents

要怎麼把預設的login shell改成自己喜歡的shell呢?

這其實是老問題了 很久以前就有人問過了

下面的法1.~法4.是爬文找到的

法5.是上網查到的

法6.是我自己弄的

總之 這篇文章算是一個統整吧

有其他方法也請不吝指教 @@

法1.

用chsh指令改shell:

chsh -s [想要的shell的路徑] [使用者名稱]

"/etc/passwd"裡必須有你的帳號才行

法2.

如果"/etc/passwd"有你的帳號的話 下這個命令:

cat /etc/passwd | grep [使用者名稱]

分隔字元的最後一段就是該帳號登入時執行的東西

改成你想用的shell即可

法1.跟法2.的限制是

如果你沒有在root權限的group裡的帳號

也沒有可以跟系統管理者申請的管道的話

那這兩個這方法基本上是無效的

法3.

如果家目錄是nfs的話 可以用ypchsh指令來改

結果大概是這樣:

...

To accept the default, simply press return. To use the
system's default shell, type the word "none".
Login shell [/bin/tcsh]: /bin/bash

The login shell has been changed on xxxx...

這範例是把tcsh改成bash

但不知道為什麼 我登入後shell還是tcsh 沒變...

法4.

如果實在沒辦法把預設的login shell改掉

也可以在登入伺服器後 直接執行一個新的shell

可以自己手打shell名稱

或是預先把shell名稱寫到登入時會被讀取的檔案中

法5.

假設預設的login shell是tcsh 想用的是bash

在.cshrc底下加入這兩行:

setevn SHELL '/bin/bash'

exec /bin/bash --login

不過這樣就沒辦法用sftp連到server了

(因為exec執行完後login shell就終止了)

法6.

假設預設的login shell是tcsh 想用的是bash

step1.

在.login中加入"exec /bin/bash --login"

step2.

在.bashrc中加入"export SHELL='/bin/bash'"

step3.

在.bash_profile中加入"source ~/.bashrc"

這樣就可以用bash了 而且sftp也不會因此出問題

--

All Comments

Selena avatarSelena2010-10-04
如果沒有root幫你改passwd 進去後再敲幾個字 bash 不是就...
Emma avatarEmma2010-10-07
我有寫這個方法呀(法4.)