Моя шкаралупа за замовчуванням - це риба, адже це набагато приємніше. Але часто, коли я запускаю сценарії, я отримую помилки, схожі на те, що скрипт bash обробляється рибою. Я думаю, що це тому, що сценарист припускав, що оболонка за замовчуванням є баш, але я не розумію механізму.
Наприклад, сценарій CrashPlan install.sh починається з bash shebang:
~/CrashPlan-install> head install.sh
#!/bin/bash
#############################################################
# Linux Client Installer Script
#############################################################
Тож коли я запускаю, ./install.sh
це має бути оброблено bash, правда? Оболонка терміналу за замовчуванням має бути неактуальною. Тим не менш, коли моя оболонка за замовчуванням - риба, запуск таких скриптів призводить до того, що риба повертає помилки, ніби вона обробляє сценарій:
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
Це через неправильну конфігурацію мого комп’ютера або через те, що сценарій написаний не портативним способом?
./test.sh
працює нормально, не створює помилок, а шістнадцятковий дамп test.sh та install.sh однаковий для перших 13 байт. І так, цеGNU bash, version 4.2.24(1)-release
. Щось ізExec=
частиною сценарію install.sh?