Eu estava curioso sobre isso, então baixei um tarball de código-fonte dos downloads DASH upstream e extraiu os arquivos de origem. Eu verifiquei um arquivo LEIA-ME que deve fornecer informações sobre o programa e suas opções de criação, mas não havia, por isso executei ./configure --help
e sua saída inclui:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-libedit Compile with libedit support
Assim, parece que a biblioteca libedit é usada para fornecer linha recursos de edição, mas este não é o padrão ao construir a fonte. Eu também encontrei esta resposta para uma mensagem de lista de discussão em set -o vi não trabalhando:
Acho que isso exige que o traço seja criado com o suporte ao libedit para funcionar.
Eu verifiquei quais bibliotecas estavam vinculadas ao executável dash
no meu servidor Ubuntu e observei que libedit
não estava incluído:
$ ldd /bin/dash
linux-vdso.so.1 => (0x00007fffcfbd6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f013a0b7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f013a475000)
Eu imagino que quando os mantenedores do pacote Debian estão construindo o pacote dash
, eles omitem essa configuração opcional, pois eles não querem que sh
tenha dependências externas em outras bibliotecas. Eles provavelmente poderiam vincular a biblioteca estaticamente, mas a principal razão para usar dash
as sh
é manter o shell o menor e mais rápido possível para que os scripts de inicialização sejam executados rapidamente.
Editar : eu apenas procurei por " libedit dash " e o resultado principal foi uma pergunta muito semelhante neste site que foi bem respondida por muru.
Criando o Dash com suporte a edição de linha
Para quem estiver interessado, estas são as etapas necessárias para criar a partir do código-fonte.
-
Faça o download do tarball de origem mais recente:
wget http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.9.tar.gz wget http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.9.tar.gz.sha256sum
-
Verifique a autenticidade do tarball:
sha256sum -c <( awk '/dash/{ print " " }' dash-0.5.9.tar.gz.sha256sum ) gpg --verify --auto-key-retrieve dash-0.5.9.tar.gz.sha256sum
-
Extraia os arquivos de origem e mude para o diretório de origem:
tar -xf dash-0.5.9.tar.gz cd dash-0.5.9
-
Execute
./configure --with-libedit
para criar os arquivos Make. No entanto, isso falhará silenciosamente, a menos que a versão de desenvolvimento da bibliotecalibedit
esteja instalada. Seria melhor se o script de configuração fosse mais lamentável, pois não era óbvio que não estava conseguindo encontrar os arquivos necessários.sudo apt-get install libedit-dev ./configure --with-libedit
-
Construa o programa e (opcionalmente) instale-o em
/usr/local/bin
:make sudo make install