TL; DR Resolva criando ~/.profile
com
if [ -x /bin/bash ]; then
exec /bin/bash
fi
Versão longa:
Depois de pesquisar por bastante tempo, descobri que no DSM6 bash é executado no modo posix (verifique com set -o
) e a conclusão da tabulação não funciona no modo vi no modo posix ( conclusão do bash no modo Posix ). Eu tentei a solução proposta adicionando bind TAB:complete
ao meu ~/.bashrc
, mas isso não funcionou. Eu também tentei desligar o modo posix com set +o posix
e isso funcionou, mas apenas na linha de comando e não quando definido em ~/.bashrc
.
Então eu tentei descobrir por que o bash começaria no modo posix por padrão. Descobri que meu shell de login estava definido como /bin/sh
(você pode encontrar isso em /etc/passwd
), que é vinculado a /bin/bash
(verifique com ls -l /bin/sh
).
Nas páginas do bash man ele diz que
If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well.
então a solução parece, foi mudar o shell de login para /bin/bash
. Depois que fiz isso, não consegui mais usar a minha sinologia, razão: Permission denied, please try again.
A causa? Aparentemente, a Synology desaprova quaisquer outros shells de login do que ash
ou sh
e eles corrigiram e compilaram isso no binário do OpenSSH (por que o & * # $% eles acham que é uma ideia inteligente ?!)
Então, o que fazer? A solução proposta é iniciar uma nova sessão bash
criando ~/.profile
com
if [ -x /bin/bash ]; then
exec /bin/bash
fi
e agora definindo set -o vi
em ~/.bashrc
funciona como esperado. O único problema é que o perfil padrão em /etc/profile
não é mais lido, então você precisa definir um bom prompt (PS1) em ~/.bashrc
. Você pode copiar um padrão ubuntu ~/.bashrc
ou você pode dar uma olhada no padrão PS1 em /etc.defaults/.bash_profile
.