Emacs Tramp-mode

Для работы с системными файлами требуются права суперпользователя. Запускать emacs с такими правами - это не правильно. И именно для этого был создан Tramp-mode.

Для его использования достаточно при открытии файла использовать следующий формат записи (жмем Ctrl-x Ctrl-f):

/sudo::/etc/rc.conf

В данном случае файл /etc/rc.conf будет открыт в режиме sudo. Естественно, пользователю, который в данный момент времени работает с Emacs должны быть предоставлены соответствующие права. После выбора файла будет произведен запрос пароля текущего пользователя.

Так же возможно открывать файлы непосредственно от имени root. Для этого вместо sudo необходимо использовать su, и вводить придется уже не пароль пользователя, а пароль root… Пример:

/su::/etc/rc.conf

Однако есть некоторая тонкость, ради которой собственно и пишу данную статью. Если в качестве оболочки текущего пользователя используется bash, все работает безукоризненно, но вот если использовать zsh, то использовать sudo уже не получиться…

Об этом пишут на официальной странице www.emacswiki.org и предлагают варианты решения. Которые правда у меня так и не сработали… В конференции emacs@conference.jabber.ru пользователем Demyan было предложено следующее. Прописываем в файл конфигурации .emacs следующую строку:

(setenv "SHELL" "/bin/sh")

После чего Tramp-mode начинает работать без проблем и с использованием в качестве оболочки zsh.


Комментарий от читателя Whitesquall (19 августа 2011г.):

Для решения проблемы работы zsh с tramp-режимом есть и более изящное решение. Необходимо добавить в конфиг zsh следующие строчки:

if [[ "$TERM" == "dumb" ]]
then
unsetopt zle
unsetopt prompt_cr
unsetopt prompt_subst
unfunction precmd
unfunction preexec
PS1='$ '
fi

Это позволит не менять шелл на bash в емаксе, но и решит проблемы с tramp, если Вы захотите редактировать файл на удалённой машине, где по умолчанию также стоит zsh.

Удачного Emacs-хакинга!

Список всех статей  |  If you would like to update this post, please send a pull request.