What have you found for these years?

2009-12-03

bashrc or bash_profile? (dot-rc)

這真是一個好麻煩的問題啊。總之我現在決定只用 bash_profile,
雖然這樣會造成 sudo su abc 不會讀取 bash_profile,
但或許該養成習慣用 sudo su - abc 吧?

畢竟我怎麼想都覺得 switch user 肯定是要用 login shell 的,
不然把兩個人的環境混在一起,通常不會想這樣做吧?
如果把 su alias 成 su - 不知道會怎麼樣 @@

另一方面,2009-12-02 (dot-rc) 這裡提到的 bash 換行問題,
應該是已經解決了。我想他的問題是,bash 把 control sequence 當成一般的
character, 因此在時機還沒到時,就 carriage return 了,
而 terminal (iterm, xterm) 碰到這個 CR 當然就 CR 了,
接下來就一堆不正常的事...

本來想欺騙 bash 說其實我的 $COLUMN 更大喔,讓他晚點 CR,
但完全失敗啊。而奇怪的是,把 control sequence 用另一種方式,
寫在 PS1 裡面的話,就不會有這個問題。嗚,bash 是笨蛋....

於是最後的解決辦法,就是改寫整個 bash_prompt...
把所有的 control sequence 都想辦法拉到 PS1 裡。
這意味著我沒辦法讓 control sequence 也在 condition 籠罩下。
幸好上次的改寫,已經把很多一樣的地方抽出來,因此沒花太多時間就改好了。

但是!
bash 實在詭異啊。感覺有一堆 special case,
例如 where=$where' ' 居然沒有任何效果...
我猜是他的 = 會把 trailing whitespace 吃掉吧?
就像 `command` 其實也會把多餘的空白通通吃掉!

好像很方便,可是這樣讓我一堆地方都要改寫。
還有 test "`command`" 才能過,test `command` 會有奇怪結果,
諸如此類....... 我懶得深究了。只能說,bash 實在很詭異,
很多地方都有 special case, 沒辦法依照直覺來寫。

剛開始用 fish 會覺得 fish 比較笨,很多地方不會幫忙處理,
但是 script 寫久就會發現,這種笨法實在比較容易用,
會幫你處理一堆 case 的 bash, 有很多地方就需要依照情況改寫。

這樣是否有點 perl style? zzz

不過 bash 實在比 fish 快太多了,試用了一下接近 fish 的 bash,
感覺很爽 XD 因為反應速度快了好多倍,也不會無故停住了....

==
就差按上的快速搜尋,如果這個也能做出來的話,
基本上我用 fish 的意義就不大了 @@
因為平常也不會寫 shell script... 很難用,
就算是 fish 一樣不是很好用... 跟 ruby 差太多了。
還是 ruby 比較現代化... unix 一堆程式都有一堆詭異的特性...
但想也知道不可能會改,這些東西的優勢,應該就是不會改吧。
所以再詭異再古老,也只能一直沿用了。

因此 application 跑 bash 就比 fish 好很多了。
但人類在用時,覺得還是 fish 好太多了...
人類其實很能接受 bug, 當然 bug 太多是不行的,
但方便性真的才是重點。不過習慣又是另一回事了....
一旦習慣,又可以凌駕其他的事情 :/ 難搞啊。

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0