So when I run
./install.sh
it should be processed by bash, right?
De fato. É exatamente para isso que serve a shebang.
Resolução de problemas
-
Salve o seguinte como
test.sh
e tente executá-lo em peixes.#!/bin/bash true && true
Funciona no meu computador e no seu.
-
Verifique se a primeira linha de
install.sh
contém apenas os caracteres#!/bin/bash
.Caracteres invisíveis (como um quebra de linha CR) podem confundir peixe.
-
Executar
/bin/bash --version
para verificar se o bash é realmente bash e não foi acidentalmente substituído / modificado ao longo do tempo.
install.sh
$SRC_USER
é apenas um sinônimo criado pelo script para $SUDO_USER
.
Como resultado, quando o script é executado com privilégios de root, o comando
su ${SRC_USER} -c "sed -imod \"s|Exec=.*|Exec=${GUISCRIPT}|\" ${DESKTOP_LAUNCHER} && rm -rf ${DESKTOP_LAUNCHER}mod"
usa automaticamente o shell padrão do usuário do sudo, que é fish.
Para substituir esse padrão, adicione a instrução -s /bin/bash
ao comando su
.