Shell package guidelines (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Shell package guidelines. Data da última tradução: 2022-08-03. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Diretrizes de pacotes do Arch

32-bitCLRCMakeCrossDKMSEclipseElectronFonteFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

Instalação

Para usuários alterarem os shells, o shell deve aparecer em /etc/shells. A maioria dos pacotes de shell têm que instalar scripts como o abaixo:

nome_do_shell.install
post_install() {
    grep -Fqx /bin/nome_do_shell /etc/shells || echo /bin/nome_do_shell >>/etc/shells
    grep -Fqx /usr/bin/nome_do_shell /etc/shells || echo /usr/bin/nome_do_shell >>/etc/shells
}

post_upgrade() {
    post_install
}

post_remove() {
    sed -i -r '/^(\/usr)?\/bin\/nome_do_shell$/d' etc/shells
}

Completações de shell

A maioria dos shells fornece um conjunto integrado de completações para alguns comandos comuns, enquanto também verifica pelo menos um diretório do sistema em busca de funções que podem ser fornecidas por outros pacotes. A tabela a seguir é um resumo de onde os pacotes podem colocar os arquivos de completação e quais arquivos devem ser nomeados.

Shell Diretório Arquivo
Bash /usr/share/bash-completion/completions nome_do_binário
fish /usr/share/fish/vendor_completions.d nome_do_binário.fish
Zsh /usr/share/zsh/site-functions _nome_do_binário

Outros shells:

  • Elvish fornece algumas completações padrão, mas não tem um diretório de todo o sistema onde as completações podem ser fornecidos ainda[1]. Para pacotes que geram funções de completações de shell para Elvish, uma solução seria empacotá-los /usr/share/elvish/completions/nome_do_binário.elv e usar um post_install() para imprimir uma dica para os usuários fazerem um link simbólico para o diretório $XDG_CONFIG_HOME/elvish/lib/.
Dica: Como regra geral, os pacotes não devem ter nem depends nem optdepends com os shells. Só porque eles fornecem completações para eles não implica uma relação de dependência de pacote de forma alguma. A exceção são os pacotes que não fornecem suas próprias completações; as completações não existem no pacote shell padrão, mas elas são fornecidas pelos pacotes de coleção suplementares bash-completion ou zsh-completions. Quando houver arquivos de completações nesses pacotes, adicione-os a optdepends.