我在``.bashrc'文件中定義了一些bash函數。在emacs shell模式下,我想使用完整的函數名稱。bash'declare'不能在腳本中使用嗎?
emacs`shell'程序包默認不能完成這些功能,所以我 計劃加強它。
問題是我無法獲得shell的當前函數定義。查詢函數定義的 常用的方法是鍵入:
$ declare -F
由於「聲明」只是一個內置的命令,我們應當以 腳本文件,把它包起來,然後用'慶典」調用它。用emacs我們可以:
* create a file, wrap the code:
-------------- file: get-functions -----------
declare -F
-------------- file end ----------------------
* in emacs, eval the expression:
(call-process "bash" "get-functions" "output-buffer")
但是,我在`output-buffer'中什麼都沒有。有趣的是,如果我 在一個真正的shell中運行該腳本:
$ bash get-functions
我還是什麼也沒得到輸出。
這是否意味着我們不能在腳本中使用`declare -F'?
順便說一句,如果我們刪除腳本文件中的「F」選項,這時我們可以 得到輸出時調用「慶典得到函數」,但我們得到的是不起作用 定義,但所有變量。
我的環境:GNU的bash,版本4.1.2(1)-release(I386-紅帽Linux的GNU的),CentOS的6.3 32位
已經有一個包在shell模式下添加了builtins/aliases/functions等的完成:https://github.com/szermatt/emacs-bash-completion。 –
感謝您的信息。 – xiepan