Так что когда я запускаю
./install.sh
это должно быть обработано Bash, верно?
В самом деле. Это именно то, для чего нужен Шебанг.
Поиск проблемы
Сохраните следующее как
test.sh
и попробуйте запустить его из рыбы.#!/bin/bash true && true
Он работает на моем компьютере, и на вашем.
Проверьте,
install.sh
содержит ли первая строка только символы#!/bin/bash
.Невидимые символы (такие как разрыв строки CR) могут запутать рыбу.
Бежать
/bin/bash --version
проверить, что bash на самом деле является bash и не был случайно заменен / изменен с течением времени.
install.sh
$SRC_USER
это просто синоним, для которого создается скрипт $SUDO_USER
.
В результате, когда скрипт запускается с правами root, команда
su $ -c "sed -imod \"s|Exec=.*|Exec=$|\" $ && rm -rf $mod"
автоматически использует оболочку пользователя sudo по умолчанию, то есть fish.
Чтобы переопределить это значение по умолчанию, добавьте инструкцию -s /bin/bash
в su
команду.