[分享] 如何在沒有root的權限下修改預設shell

看板Linux作者 (奔跑的蝸牛)時間13年前 (2010/09/30 08:56), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
要怎麼把預設的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
如果沒有root幫你改passwd 進去後再敲幾個字 bash 不是就...
10/02 00:02, 1F

10/02 00:35, , 2F
我有寫這個方法呀(法4.)
10/02 00:35, 2F
※ 編輯: Holocaust123 來自: 140.112.30.32 (10/10 21:52)
文章代碼(AID): #1Ce-0srs (Linux)