Вопрос или проблема
Когда я редактирую crontab, используя crontab -e
, он открывает crontab в vi. Я бы предпочел, чтобы он использовал nano. Как я могу это изменить?
ИЗМЕНЕНИЕ:
По какой-то причине команда export
возвращает команда не найдена
. И изменение переменной окружения EDITOR не сработало для crontab -e
.
Следующая команда сработала на моей системе:
setenv VISUAL /usr/local/bin/nano
Для оболочек на основе sh:
export EDITOR=/path/to/nano
Для оболочек на основе C:
setenv EDITOR /path/to/nano
Помните, что если вы не сохраните эти настройки в скрипт входа в систему (/home/user/.bash_profile, например), вы потеряете настройки при выходе.
Если я правильно помню, FreeBSD использует C shell в качестве оболочки по умолчанию.
Должно быть
export EDITOR=/usr/bin/nano
откорректируйте для вашего расположения nano (используйте ‘which’, чтобы найти). Вы можете положить эту команду в свой .bashrc или аналогичный скрипт профиля, чтобы она была активна все время.
-
GNU nano не является частью базовой системы. Вам сначала нужно установить его. Самый удобный вариант — установить бинарный пакет:
pkg install editors/nano # выполнить от имени `root`
Если это ваше первое обращение к команде
pkg
,pkg
сначала будет инициализирован; после этого вы можете повторно выполнить ту же команду (теперь фактически выполняя установку).В качестве альтернативы, если вам просто не удается справиться с криптическими командами и режимами
vi
, «легкий редактор»ee
сопоставим с GNU nano и включен в состав базовой системы с версии FreeBSD 2.1.5. -
Как предписывает стандарт POSIX™, значение переменной окружения
EDITOR
используется для определения, какой редактор использовать дляcrontab -e
, и если она не установлена или пуста, используетсяvi
как запасной вариант. Таким образом, ваш вопрос сводится к «как установить переменную окружения?»Чтобы ответить на вопрос, вам нужно оценить где будет применяться значение данной переменной окружения:
- Распространяется ли это на всех пользователей системы?
- Распространяется ли это на всех пользователей, аутентифицирующихся через определенный стек служб PAM (например, только
sshd
)? - Распространяется ли это на пользователей, входящих через определенные каналы (например, только
ttyv4
)? - Распространяется ли это на всех пользователей, использующих определенную оболочку (например, только
zsh
)? - Это касается одной категории пользователей?
- Это для одного пользователя?
- Это для одного пользователя, использующего определенную оболочку?
- Это только для одного вызова?
Изложение всех вариантов занимает слишком много времени, поэтому, не зная ваших конкретных требований, я предполагаю, что вы хотите изменить
~/.login_conf
:- Убедитесь, что переменная окружения
EDITOR
еще не установлена.printenv EDITOR
Если это выводит значение, вам сначала нужно попытаться выяснить, где она устанавливается. Если она устанавливается через глобальный
/etc/login.conf
, то все в порядке, потому что~/.login_conf
имеет приоритет. Если она устанавливается через какой-то скрипт, которыйsource
ваш входной шелл, вам нужно сначала изменить этот файл. В противном случае следующий шаг не окажет влияния. - Теперь вы можете редактировать файл. Предполагая, что
~/.login_conf
еще не существует, просто напишитеcat > ~/.login_conf << 'EOT' me:setenv=EDITOR=nano: EOT
Это не окажет немедленного эффекта в текущей сессии; вам нужно будет заново войти в систему, чтобы увидеть изменения.
Файл
~/.login_conf
применяется только к конкретному пользователю, но независимо от используемой оболочки и метода входа в систему (с учетом конфигурации PAM по умолчанию). Это идеально подходит для предпочтений на основе вкуса (какEDITOR
) или человеческого фактора в общем (естественный язык).
Вероятно, установив переменную окружения EDITOR.
То есть
export EDITOR=/path/to/nano
Под /etc/alternatives/editor есть символическая ссылка, которая может указывать на /path/to/nano
Вы можете использовать утилиту update-alternatives для этого – хотя я не слишком хорошо с ней знаком.
(замечание – я говорю с точки зрения ‘ubuntu’. не уверен, что это то же самое для FreeBSD)
Ответ или решение
Для изменения редактора по умолчанию для команды crontab -e
на FreeBSD с vi
на nano
, необходимо выполнить несколько шагов. Ниже я приведу подробное объяснение процесса, которое поможет вам в реализации данной задачи.
Шаг 1: Установка nano
Прежде всего, убедитесь, что редактор nano
установлен на вашей системе. Поскольку nano
не входит в стандартный пакет FreeBSD, вам нужно установить его через менеджер пакетов pkg
. Это можно сделать, выполнив следующую команду от имени пользователя с правами администратора (root):
pkg install editors/nano
Если вы впервые используете команду pkg
, она автоматически выполнит загрузку необходимых пакетов. После завершения установки nano
можно проверить его доступность, выполнив команду which nano
, которая покажет путь к исполняемому файлу.
Шаг 2: Изменение переменной окружения EDITOR
Если вы хотите, чтобы команда crontab -e
открывала nano
, нужно установить переменную окружения EDITOR
. Для этого подход зависит от вашего типа командной оболочки.
Для C shell (csh/tcsh)
Если вы используете C shell, выполните команду:
setenv EDITOR /usr/local/bin/nano
Эта команда задаст значение переменной EDITOR
для текущей сессии. Чтобы сделать изменения постоянными, добавьте эту строку в ваш файл конфигурации (например, ~/.cshrc
или ~/.login
):
echo 'setenv EDITOR /usr/local/bin/nano' >> ~/.cshrc
Не забудьте выполнить команду source ~/.cshrc
, чтобы изменения вступили в силу.
Для Bourne shell (sh) и его производных (bash/zsh)
Если вы используете Bourne shell или его производные, используйте команду:
export EDITOR=/usr/local/bin/nano
Чтобы сделать это изменение постоянным, добавьте вышеуказанную строку в файл ~/.bashrc
или ~/.profile
:
echo 'export EDITOR=/usr/local/bin/nano' >> ~/.bashrc
После редактирования файла, выполните команду:
source ~/.bashrc
Шаг 3: Проверка изменений
После выполнения всех шагов, вы можете проверить, что переменная EDITOR
установлена корректно, запустив команду:
echo $EDITOR
Она должна вернуть путь к nano
. Теперь при запуске команды crontab -e
будет открываться редактор nano
.
Решение возможных проблем
Если команда setenv
возвращает command not found
, это означает, что вы, возможно, используете оболочку, отличную от C shell. Убедитесь, что вы находитесь в правильной оболочке перед выполнением соответствующих команд.
Также помните, что если переменная EDITOR
уже была установлена где-то в конфигурационных файлах, она может перезаписываться. В таком случае проверьте все файлы автозагрузки оболочки.
Заключение
Следуя этим шагам, вы сможете легко изменить редактор для редактирования crontab на nano
в FreeBSD. Это позволяет значительно упростить редактирование задач Cron для пользователей, непривыкших к командам и интерфейсу vi
.