2009-09-28 24 views
0

我剛剛開始使用Solaris 10(Sparc)盒,在這裏我遠程登錄並遇到非常不友好的界面(與我在cygwin或linux中使用的標準bash shell相比)---箭頭鍵不工作,因爲我期望他們。作爲一個NIS系統,更改shell並不像使用「chsh」命令那麼簡單。並且將〜/ .login和〜/ .profile中的SHELL環境變量設置爲不適用於我。所以我想我可能需要編寫一個腳本來確定bash是否正在運行腳本,如果答案是否定的,則開始bash。我的第一次嘗試,試圖從〜/ .profile調用/ bin/bash似乎工作,但有點不舒服。其他建議?我該如何通過編程方式告訴哪個shell實際執行?需要編寫一個程序來正確配置登錄shell

回答

0

你可以通過echo $0來判斷shell運行的是什麼。例如:

$ echo $0 
-bash      

如果你改變了你可能要替換當前的shell進程,而不是成爲它的孩子,所以使用exec外殼。

另外,你想pass bash the -l flag so it acts as if it has been called as part of the login process

所以你會希望是這樣的:

exec bash -l 
+0

對「exec bash -l」+1,但如何防止遞歸?這是我寫的: ... if [「$ 0」!=「-bash」];然後 回聲啓動bash ... exec bash -l fi 當我運行它時,它會繼續產生新的bash進程。 :-( – pajato0 2009-09-28 15:25:25

+0

對不起,上一條評論中顯示的壓縮腳本實際代碼格式正確 – pajato0 2009-09-28 15:27:10

+1

如果如果$ bash不是登錄shell,則返回「bash」如果嘗試: if [「$ 0」!=「 -bash「-a」$ 0「!=」bash「];然後 – 2009-09-28 16:12:00

0

你可能有ksh(1)在Solaris上運行。你有幾個選擇,請閱讀ksh的聯機幫助頁並配置它,或者安裝另一個你更熟悉的shell,比如bash。我會personnaly推薦zsh。

+0

我喜歡你關於安裝另一個shell的建議我更熟悉Bash會很好,在NIS環境下如何做到這一點? – pajato0 2009-09-28 15:22:09

+0

在你的系統上查找ypchsh程序(/ usr/sbin或其他東西關閉)檢查/ etc/shells中的有效shell並使用ypchsh將你的登錄shell更改爲bash如果bash不在這裏,請安裝(或者讓你的管理員去做) 作爲最後的手段,您可以在您的$ HOME/bin中編譯和安裝bash,並在.profile中使用「exec $ HOME/bin/bash」... – Keltia 2009-09-29 09:47:09

相關問題