[分享] 如何在沒有root的權限下修改預設shell
要怎麼把預設的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也不會因此出問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.32
推
10/02 00:02, , 1F
10/02 00:02, 1F
→
10/02 00:35, , 2F
10/02 00:35, 2F
※ 編輯: Holocaust123 來自: 140.112.30.32 (10/10 21:52)