Posso usar o interpretador Bash nos scripts de serviço / daemon?

3

Estou escrevendo um serviço Debian / Ubuntu que deve começar no nível de execução 2-5.

A maioria dos serviços existentes I veio em frente são escritas usando intérprete /bin/sh (Shell), enquanto /bin/bash (Bash) oferta lote de melhoria e simplificação.

Então, há boas razões para evitar o uso do bash , quando as metas são limitado a debian 6 + e ubuntu 12.04 ?

Atualização:

Eu costumo adicionar o seguinte shebang aos meus scripts: #!/usr/bin/env bash

    
por Édouard Lopez 15.07.2014 / 21:55

3 respostas

1

Se você segmentar especificamente sistemas que sempre vêm com bash (principalmente as distros típicas do Linux (?)) não vejo mal em fazer uso dele se isso permitir scripts mais fáceis de manter ou outras vantagens significativas para você é claro que o shebang reflete corretamente a dependência bash ).

dash tem como objetivo ser um shell compatível com POSIX. O Debian e o Ubuntu mudaram para como um meio de obter um shell mais leve na maioria dos seus scripts de inicialização (levando a tempos de inicialização mais rápidos, etc), bem como garantir que todos os seus scripts que afirmam ser executados com /bin/sh não estejam realmente repletos de bashismos acidentais.

Se, por outro lado, a portabilidade é importante, acho que seu padrão /bin/sh ( dash ) parece um ponto de partida muito melhor, pois um script que usa apenas recursos de shell POSIX provavelmente será executado na maioria dos sistemas, não somente aqueles com bash presentes. No entanto, é claro que há muitos outros fatores além do shell a serem levados em conta ao lidar com a portabilidade.

    
por 17.07.2014 / 14:11
2

Não há motivos para evitar o uso do bash nos scripts de inicialização. Se você está confortável com o bash e gosta dele porque ele oferece funcionalidades que você não obtém em outro shell, use-o. Primeiro, certifique-se de que seu / bin / sh não seja realmente um link para / bin / bash ou uma cópia do / bin / bash - em alguns sistemas, este é o caso.

    
por 16.07.2014 / 01:46
1

O Bash pode não estar instalado.

Ao contrário de outras distribuições, o Debian e o Ubuntu usam o dash, um shell Bourne simples, como o shell padrão / bin / sh.

    
por 15.07.2014 / 22:00