之前在服務器上的一些 bash 的操作習慣想在 mac 上保留,比如在跳板機上登陸服務器的命令,我在服務器上把命令作了別名保存這樣我就可以簡短的命令鍵入后就可以登陸到服務器.
比如在.bashrc 文件添加如下內容,腳本中的 login.sh 是自己寫的登陸腳本.腳本會根據輸入參數來區分登陸的環境.然后再根據另外的一個參數來選取登陸機器.
alias beta='~/login.sh beta' alias prod="~/login.sh prod"
然后使用 source 命令更新資源文件
source .bashrc
然后就可以使用如下命令
beta machineNameKeyWords
現在我需要把此腳本應用到 Mac 機器的 bash 上.發現 mac 上並沒有這么一個.bashrc 文件,而且發現 mac 上的一些自定義的別名是存儲在了.bash_profile 文件中.如當初遇到的
Mac OS X 是基於 FreeBSD 的,所以一些工具 ls, top 等都是 BSD 那一套,ls 不是 GNU ls,所以即使 Terminal/iTerm2 配置了顏色,但是在 Mac 上敲入 ls 命令也不會顯示高亮,可以通過安裝 coreutils 來解決(brew install coreutils),不過如果對 ls 顏色不挑剔的話有個簡單辦法就是在 .bash_profile 里輸出 CLICOLOR=1:
鏈接地址:http://www.vpsee.com/2013/09/use-the-solarized-color-theme-on-mac-os-x-terminal/
http://www.douban.com/note/321472256/
簡單的說就是:
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.
Mac OS X — an exception
An exception to the terminal window guidelines is Mac OS X’s Terminal.app, which runs a login shell by default for each new terminal window, calling .bash_profile instead of .bashrc. Other GUI terminal emulators may do the same, but most tend not to.
而糟糕的是,MAC是一個例外,它會執行bash_profile,但不會去管.bashrc
因此你可以看到一般在要加 bash 的配置的地方,教程里面都使用的是.bash_profile 的配置.而不是說修改這個 .bashrc 文件.造成這些區別的原因是 Mac 的 bash 是一個 loginbash,loginbash會加載的是.bash_profile 不會加載.bashrc 文件.因此我們要做的就是
參考文獻:
login-bash 與nonlogin-bash 的區別:http://www.cnblogs.com/qcly/p/3273373.html
http://my.oschina.net/yunyue/blog/108399