исходная команда не найдена в оболочке sh
у меня есть скрипт, который использует sh оболочки. Я получаю ошибку в строке, которая использует . Кажется source не входит в мои sh оболочки.
если я явно пытаюсь запустить source из консоли я получаю:
sh: 1: source: not found
должен ли я как-то установить "источник"? У меня есть неправильная версия sh?
10 ответов:
/bin/shобычно какая-то другая оболочка пытается имитировать оболочку. Многие дистрибутивы используют/bin/bashнаsh, Он поддерживаетsource. На Ubuntu, хотя,/bin/dashиспользуется, который не поддерживаетsource. Большинство оболочек используют.вместоsource. Если вы не можете изменить сценарий, попробуйте изменить оболочку, которая его запускает.
$ls -l `which sh` /bin/sh -> dash $sudo dpkg-reconfigure dash #Select "no" when you're asked [...] $ls -l `which sh` /bin/sh -> bashтогда все будет хорошо
The
sourcebuiltin-это башизм. Напишите это просто как.вместо.например
. $FILE # OR you may need to use a relative path (such as in an `npm` script): . ./$FILE
The
sourceкоманда встроена в некоторые оболочки. Если у вас есть скрипт, он должен указать, какую оболочку использовать в первой строке, например:#!/bin/bash
эта проблема возникает потому, что Jenkins Execute Shell запускает скрипт через свой /bin / sh
следовательно, /bin / sh не знает "источник"
вам просто нужно добавить строку ниже в верхней части вашей оболочки выполнения в jenkins
#!/bin/bash
Я нашел в gnu Makefile на Ubuntu, (где /bin/sh -> bash)
Мне нужно использовать . команды, а также указать целевой сценарий ./ префикс (см. пример ниже)
источник не работал в этом случае, не уверен, почему, так как он должен вызывать /bin/bash..
моя переменная среды оболочки также установлена в /bin / bash
test: $(shell . ./my_script)Примечание этот пример не включает символ табуляции; пришлось форматировать для stack exchange.
источник это встроенная команда bash, поэтому для выполнения исходной команды вы можете войти в систему как Root.
sudo -s source ./filename.sh