So when I run
./install.shit should be processed by bash, right?
De fato. É exatamente para isso que serve a shebang.
Resolução de problemas
-
Salve o seguinte como
test.she tente executá-lo em peixes.#!/bin/bash true && trueFunciona no meu computador e no seu.
-
Verifique se a primeira linha de
install.shcontém apenas os caracteres#!/bin/bash.Caracteres invisíveis (como um quebra de linha CR) podem confundir peixe.
-
Executar
/bin/bash --versionpara 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 .