Моя оболочка по умолчанию - рыба, потому что она намного приятнее. Но часто, когда я запускаю сценарии, я получаю ошибки, которые, похоже, происходят из-за сценария bash, который обрабатывается fish. Я думаю, это потому, что автор сценария предположил, что оболочкой по умолчанию является bash, но я не понимаю механизм.
Например, сценарий CrashPlan install.sh начинается с bash shebang:
~/CrashPlan-install> head install.sh
#!/bin/bash
#############################################################
# Linux Client Installer Script
#############################################################
Поэтому, когда я запускаю ./install.sh
он должен обрабатываться bash, верно? Терминальная оболочка по умолчанию должна быть неактуальной. Тем не менее, когда моя оболочка по умолчанию - fish, запуск таких скриптов заставляет fish возвращать ошибки, как будто он обрабатывает скрипт:
fish: Expected a command name, got token of type “Run job in background”. Did you mean
“COMMAND; and COMMAND”? See the help section for the “and” builtin command by typing “help and”.
Standard input: sed -imod "s|Exec=.*|Exec=/usr/local/crashplan/bin/CrashPlanDesktop|"
/home/username/Desktop/CrashPlan.desktop && rm -rf /home/username/Desktop/CrashPlan.desktopmod
Это из-за неправильной конфигурации моего компьютера или из-за того, что скрипт написан непереносимым способом?