

<div id="comment_title"><!--acac--><a href='http://deleted' rel='external nofollow' class='url'>zer0c00l</a> (<font color=#FF9966>usu&aacute;rio n&atilde;o registrado</font>) em <a href="#comment-9333" title="">14/05/2008 &agrave;s 8:57 pm</a> </div>
<p>I don&#8217;t do shell screeeeepts, you insensitive clod!</p>


<div id="comment_title"><!--acac--><a href='http://geek.linuxman.pro.br' rel='external nofollow' class='url'>Eri Ramos Bastos</a> (<font color=#FF9966>usu&aacute;rio n&atilde;o registrado</font>) em <a href="#comment-9334" title="">14/05/2008 &agrave;s 9:07 pm</a> </div>
<p>Excelente artigo. Só não concordo em _não_ usar bashismos.<br />
Na minha opinião o Bash tem excelentes recursos que poder ser usados sem dó nem piedade.<br />
Só precisa de bom-senso de apostar o shebang pra /bin/bash ao invés de /bin/sh, como muita gente faz (e acaba tendo resultados desagradáveis quando usa Ubuntu, por exemplo, que aponta o /bin/sh pra /bin/dash)</p>
<blockquote cite="zer0c00l"><p> you insensitive clod!</p></blockquote>
<p>Tá melhorando o nível aqui. Até citação tá rolando. Quem vai começar com as analogias de carro? Mas posso estar errado&#8230; I&#8217;m new here. ;)</p>


<div id="comment_title"><!--acac--><a href='http://leandrosan.wordpress.com' rel='external nofollow' class='url'>tenchi</a> em <a href="#comment-9335" title="">14/05/2008 &agrave;s 9:23 pm</a> </div>
<p>Concordo com o colega acima. Não existem &#8220;bashismos&#8221;. Ou vc escolhe um interpretador de comandos padrão, ou não sai do lugar.<br />
Criar um script que seja &#8220;interoperável&#8221; entre vários interpretadores diferentes ao meu ver não tem aplicação alguma.</p>
<p>set i=10 # tcsh</p>
<p>i=10 # bash, zsh</p>
<p>set i 10 # fish</p>
<p>São a mesma coisa, mas em cada interpretador tem uma sintaxe diferente. Além do mais, quem ainda usa o sh (o shell padrão do unix, de 30 anos atrás)?</p>
<p>Eu costumo escrever scripts em bash com o máximo que o bash venha a me oferecer. Desde expansão de variáveis, aritmética, e coisas do tipo.</p>
<p>A maioria das distros linux e variantes Unix possuem o bash ou o csh, portanto não há problema algum em explorar ao máximo. Tirando o Ubuntu, que, como disse o colega acima, em versões anteriores trazia o interpretador dash (que eu não tenho a mínima idéia do que seja ;-)).</p>


<div id="comment_title"><!--acac-->Douglas Augusto (<font color=#FF9966>usu&aacute;rio n&atilde;o registrado</font>) em <a href="#comment-9354" title="">15/05/2008 &agrave;s 5:20 am</a> </div>
<p>Se querem usar bashismos, que usem, mas o chamem de &#8220;Bash script&#8221;, não genericamente de &#8220;shell script&#8221;. Isto porque &#8216;shell&#8217; não implica em Bash, em outras palavras, o Bash é um shell, mas shell não se limita ao Bash. </p>
<p>Portanto entende-se para shell script comandos escritos conforme as especificações POSIX, e espera-se que rodem em todos os shells compatíveis com POSIX, dentre eles o enxuto e rápido Dash.</p>
<p>Se você quer mais portabilidade/robustez ou não quer que seu script dependa de algum shell específico (embora livre nem sempre o Bash é a melhor escolha para um sistema), o melhor é seguir o POSIX, e um grande guia nesse sentido é o próprio Dash, onde não há &#8220;dashismos&#8221;.</p>


<div id="comment_title"><!--acac--><a href='http://www.goblinx.com.br/index_home.htm' rel='external nofollow' class='url'>Grobsch</a> em <a href="#comment-9356" title="">15/05/2008 &agrave;s 7:20 am</a> </div>
<p>Gostei do artigo, interessante, bom para aprender alguns truques&#8230; Shell é mesmo aprender lendo, eu acabo copiando erros de outros scripts&#8230;</p>
<p><a href="http://www.goblinx.com.br/index_home.htm" rel="nofollow">GoblinX, um livecd brasileiro com base Slackware</a></p>


<div id="comment_title"><!--acac--><a href='http://leandrosan.wordpress.com' rel='external nofollow' class='url'>tenchi</a> em <a href="#comment-9360" title="">15/05/2008 &agrave;s 8:56 am</a> </div>
<p>Douglas, para coisas mais básicas é perfeitamente possível escrever scripts portáveis. Um script que faça:<br />
<code><br />
cd /etc/<br />
sed s/ab/cd/g arquivo.txt<br />
</code></p>
<p>Pode perfeitamente ser escrito em qualquer interpretador. Mas se vc quiser um script que exija algo mais, daí ou fica-se limitado ao básico que são as próprias ferramentas que o unix oferece, sem built-in algum do interpretador de comandos &#8211; não consigo escrever condições do tipo <code>[ $i -lt $j -a $k -ne $z ]</code> Pra mim é <code>(( (i&amp;ltj) &amp;&amp; (k!=z) ))</code><br />
mesmo sabendo que não é algo portável, mas visivelmente mais lógico.</p>
<p>Concordo quando diz: &#8220;chame bash script ao invés de shell script&#8221;. Mas discordo com relação ao dash. Quem foi que nventou aquela coisa? Durante o tempo q usei Ubuntu, percebia que ele era bem mais lento que o bash, mas não tinha coisas básicas que o bash tinha. Dash é padrão POSIX?</p>


<div id="comment_title"><!--acac--><a href='http://geek.linuxman.pro.br' rel='external nofollow' class='url'>Eri Ramos Bastos</a> (<font color=#FF9966>usu&aacute;rio n&atilde;o registrado</font>) em <a href="#comment-9361" title="">15/05/2008 &agrave;s 9:40 am</a> </div>
<p>O Dash é POSIX sim. E, na teoria, é pra ser mais rápido que o Bash.<br />
Mas não posso dar opinião sobre ele, já que nunca usei.</p>
<p>No Ubuntu <a href="https://bugs.launchpad.net/ubuntu/+source/dash/+bug/61463" rel="nofollow">deu pano pra manga</a> a discussão de colocar /bin/sh apontando pra /bin/bash &#8211; mas eu concordo com o argumento do pessoal do Ubuntu e também do Douglas. Se você fez um <strong>bash</strong> script, o <a href="http://en.wikipedia.org/wiki/Shebang_%28Unix%29" rel="nofollow">shebang</a> deve apontar corretamente para /bin/bash.</p>
<p>[]&#8216;s</p>


<div id="comment_title"><!--acac--><a href='http://br-linux.org/' rel='external nofollow' class='url'>Augusto Campos</a> em <a href="#comment-9362" title="">15/05/2008 &agrave;s 9:45 am</a> </div>
<p>O Dash, além de atender ao POSIX, depende de menos bibliotecas e executa scripts mais rapidamente. O número menor de dependências faz dele uma shell melhor adaptada a ser usada pelos processos do sistema, incluindo as do init e shutdown, e várias outras. </p>
<p>Respondendo ao questionamento, ele foi portado para o Linux por Herbert Xu, a partir do ash (do NetBSD).  O autor original do ash foi Kenneth Almquist.</p>
<p>Para usar o bash, e não o dash, em um sistema que use o dash como o seu /bin/sh, basta declarar corretamente #!/bin/bash na primeira linha.</p>


<div id="comment_title"><!--acac-->cristo (<font color=#FF9966>usu&aacute;rio n&atilde;o registrado</font>) em <a href="#comment-9505" title="">16/05/2008 &agrave;s 5:58 pm</a> </div>
<p>Gostei da iniciativa do Ubuntu de trocar o sh-&gt;Bash para sh-&gt;Dash pois obriga a ao invés de escrever o shebang com #!/bin/sh você acaba tendo que escrever sendo #!/bin/bash que torna a coisa mais oraganizada. Pois se escreveu em bash é para ser Bash e nunca shell</p>

