2011-08-03 28 views
2

我在OS X 10.6.8上。我已經使用Emacs for OS X(http://emacsformacosx.com/)和Aquamacs(兩者的當前版本)複製了以下錯誤。Emacs在PATH變量中添加「不適當的ioctl」錯誤

我在Subversion Repo中編輯文件時嘗試進入版本控制模式(CTRL-X v v),發現了這個問題。我得到以下錯誤:

「搜索程序:沒有這樣的文件或目錄,SVN」

在OS X,SVN是在/ usr/bin中。

C-h v exec-path表明這一點: 「在/ usr/bin中」

exec-path is a variable defined in `C source code'. 
Its value is 
("mesg" " ttyname" " Inappropriate ioctl for device/usr/bin" "/bin" "/usr/sbin" "/sbin" "/usr/local/bin" "/usr/X11/bin" "/usr/local/git/bin" "/Users/schof/py/scripts" "/usr/texbin" "/Users/schof/py/scripts") 

注 「爲設備不適當的ioctl」 是怎麼搗碎了我很肯定這就是Emacs在/ usr/bin中找不到svn的原因。

任何想法,我如何解決這個問題?或進一步的故障排除建議

回答

1

這裏有許多事情可以做:

  1. 谷歌爲possible causes of the "Inappropriate ioctl for device" message正在寫入。這將爲您提供有關可能導致此消息的事件類型的一些線索。
  2. 運行沒有init文件的emacs,然後檢查這個消息是否仍然存在於你的exec-path變量中。如果是這樣,那麼可能是由於Emacs外部的東西(例如 - 您的.bashrc或其他shell init文件)。看看callproc.c中的C源代碼,看起來最可能的罪魁禍首是環境變量「EMACSPATH」或「PATH」,因此您應該檢查這些環境變量以及任何代碼在您運行的任何shell腳本中設置這些變量。但是,Mac OS X上的環境變量也可能來自「〜/ .MacOSX/environment.plist」,因此您應該檢查設置的內容以確定是否是罪魁禍首。
  3. 如果在沒有初始化文件的情況下運行emacs時沒有收到「不適當的設備ioctl for device」消息,請開始執行Emacs init文件的塊(每次檢查exec-path變量以查看運行的代碼是否導致錯誤消息被添加)。

祝你好運!

+0

對我的.emacs文件進行了二分查找,發現http://stackoverflow.com/questions/5543989/pylint-not-working-with-emacs-gui-on-os-x-works-from-command -line/5558223#5558223是有問題的.emacs代碼。但是,我能夠通過在emacs shell中執行「echo $ PATH」來複制該問題。儘管從終端工作得很好。最終的小結是我的.bashrc中的「mesg n」行,當它從非交互式終端運行時,會導致錯誤消息。刪除它解決了問題。 – Schof

相關問題