Bash
如何製作有效的 emacs 別名函式?
為了解決 tmux 令人討厭的問題,我的 .bashrc 文件中有以下程式碼:
alias emcs="command emacs" # Fix emacs in tmux emacs () { if [ $TERM != "xterm" ] then TERM=xterm emacs "$@" else emacs "$@" fi return; }
別名只是為了更容易訪問原始 emacs 命令。
無論後面列出的參數如何,該函式都應該替換
emacs . . .
為。TERM-xterm emacs . . .
我的問題是,當我執行時
emacs
,它掛在命令行上。如果我將函式更改為“emaacs”或“emacs”以外的任何內容,那麼它可以完美執行。為什麼當我使用命令的實際名稱時它會掛起,我該怎麼做才能讓它工作?(如果您想知道我為什麼要這樣做,那是因為 tmux 將終端更改為螢幕,由於某種原因,這會更改註釋和變數名稱相同顏色的 emacs 顏色。)
看看你的功能。在此範例中,我更改了一些名稱以控告有罪,並與您的問題無關:
recurse{} ( recurse "$@" }
你認為這會在呼叫時做什麼?
要解決此問題,您可以呼叫顯式二進製文件:
emacs () { if [ $TERM != "xterm" ] then TERM=xterm /usr/bin/emacs "$@" else /usr/bin/emacs "$@" fi return; }
或者您可以依靠正確設置的路徑:
emacs () { if [ $TERM != "xterm" ] then TERM=xterm command emacs "$@" else command emacs "$@" fi return; }