Zyxmon писал(а):Источник цитаты Вопрос. Как установить bash в качестве оболочки (shell)?
Ответ. Для стандартных установок это не всегда возможно. Для альтернативных это делается так. Поставим пакет bash (opkg install bash). Добавим строку `opt/bin/bash` в файл /opt/ect/shells. Зададим (для удобства) переменную PS1 в фале .profile пользователя (/opt/root для root), например, `export PS1="[\h@\w]>"`. Отредактируем файл /opt/etc/passwd и зададим bash нужному пользователю (последний параметр).
Хочу дополнить эту инструкцию: для bash еще нужно добавить строки
Код: Выделить всё
"\e[1~": beginning-of-line
"\e[4~": end-of-line
в файл ~/.inputrc. Иначе клавиши Home и End в терминале не работают.
Еще заметил странную проблему с bash, которая проявилась в Entware-3x на архитектуре mips (big-endian). На других архитектурах (armv7, x64) вроде все нормально. Если ставить /opt/bin/bash в passwd, то некоторые SFTP-клиенты не смогут заходить на наш сервер. Симптомы проблемы такие:
Код: Выделить всё
~ # ssh root@localhost pwd
root@localhost's password:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Invalid argument
pwd: error retrieving current directory: getcwd: cannot access parent directories: Socket operation on non-socket
~ # ssh root@localhost env
root@localhost's password:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Invalid argument
SHELL=/opt/bin/bash
SSH_CLIENT=127.0.0.1 34644 22
USER=root
PATH=/opt/usr/sbin:/opt/sbin:/opt/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=127.0.0.1 34644 127.0.0.1 22
_=/opt/bin/env
То есть переменной PWD в окружении нет до применения ~/.profile. Если уж в такой ситуации хочется иметь bash, то рабочий костыль тут такой: вернуть /opt/bin/ash в passwd, а ~/.profile закончить строками
Код: Выделить всё
export SHELL=/opt/bin/bash
SHLVL=0
exec /opt/bin/bash
Тогда SFTP/SCP клиенты будут юзать ash, а мы сами - bash. (Кстати заметил, что при авторизации в dropbear в интерактивный ash теперь последовательно выполняются /opt/etc/profile И ~/.profile, так что в последнем ". /opt/etc/profile" ставить не надо).
Еще одна проблема bash (может быть связанная с PuTTY). Иногда что-то такое случается, что при вводе длинной команды курсор не сдвигается вниз, а смещается в левый край на той же линии, стирая приветствие и начало набранной команды. Как с этим бороться правильно - не знаю, но если не хочется закрывать терминал или входить в шелл следующего уровня, то лучше применить "exec /opt/bin/bash".