По умолчанию (по крайней мере, на Fedora и другом Redhat derivitives) улучшенный энергией установлен, и он добавляет файл/etc/profile.d/vim.sh
alias vi=vim
Таким образом в Вашем .bashrc или вручную можно не исказить vi, и Вы получите бесцветный интерфейс vi, который Вы ожидаете. Я поместил следующее в свой стандарт bashrc
unalias vi 2> /dev/null
Хорошо, оказывается, что это происходило из-за причудливого взаимодействия с моей конфигурацией удара.
У меня есть что-то в моем .bash_profile
это помещает в настоящее время выполняемую команду в заголовок окна, или screen
вкладка. Это работает при помощи a trap
:
trap 'bash_current_command' DEBUG
и перед этим:
function bash_current_command {
# only works in bash > 3.1
#set -- $BASH_COMMAND
# for old bash
set -- $(history 1)
shift
if [[ "$1" == "sudo" ]]; then
cmd="*$(basename -- "$2")*"
else
cmd="$(basename -- "$1")"
fi
bash_set_title "$cmd"
}
bash_set_title
немного функции, которая устанавливает заголовок текущего терминала и заголовок значка с помощью управляющих кодов ANSI. Как Вы видите, это создает подоболочки $(...)
, и моя интуиция сказала мне, что это могло быть проблемой. Действительно, после того, как я изменил те строки, это работало!
Если кто-то знает, почему это происходит, я был бы рад услышать детали. Сделайте подоболочки обычно крадут tty
вход? Или действительно ли это - только проблема в прерывании отладки? Я не вспоминаю проблем с постоянным клиентом stdin
вход / передающий по каналу в команды.
(Как можно также видеть, существует несколько проблем с моей функцией так или иначе - она использует одну из подоболочек как обходное решение, таким образом, она может работать на архаичной версии удара (я застреваю с нею в унаследованной системе, но все еще хотел объединенную конфигурацию). Другая подоболочка используется для извлечения фактической команды при использовании sudo
, но это перестало работать, если sudo называют с переключателями как sudo -H -u user command
. Таким образом, я буду рассматривать это как возможность согласовать этот код...),
Этот ответ не объясняет Ваш конкретный вопрос, но предлагает некоторые возможные обходные решения, которые, также, вероятно, сделают Вашу жизнь более удобной.
Если Вы используете ssh только, чтобы получить доступ к удаленным файлам а не выполнить удаленные команды, то можно смонтировать удаленную файловую систему через sshfs. Необходимо будет установить FUSE для OS X и SSHFS сначала. (Я не знаю, существуют ли двоичные дистрибутивы для OSX.) Затем выполненный
mkdir ~/myserver
sshfs myserver:/ ~/myserver
Необходимо будет пройти проверку подлинности только, когда Вы будете работать sshfs
команда. После этого удаленные файлы доступны под ~/myserver
, таким образом, можно сделать diff ~/myserver/path/to/remote-file local-file
не имея необходимость волноваться, что один из файлов является удаленным. Выполненный fusermount -u ~/myserver
размонтировать файловую систему.
Другой подход, который позволяет Вам пройти проверку подлинности однажды и затем выполнить много команд ssh, должен настроить основное соединение. Посмотрите Многократное использование ssh сессия для повторных команд rsync
bash
. С 3.0.16, я не воспроизвожу Ваш, но я вижуbash: child setpgid (24993 to 24990): Operation not permitted
после выполнения базового имени. Мое подозрение - этоssh
заканчивает тем, что находился не в группе приоритетного процесса терминала и поэтому приостанавливается, когда это пытается отключить эхо, которое является, почему Вы видите свой отраженный пароль. Журнал astrace -f
сказал бы нам больше. – Stéphane Chazelas 18.08.2013, 22:29