Я перехожу от Kubuntu 14.04 до 16.04, начиная с новой установки 16.04 и портирования моего кода, и вижу разницу в обработке скриптов между двумя версиями.
Вот настройка. Я в каталоге, содержащем исполняемый файл (dtc) и подкаталог, содержащий сценарий sh (dtc-версия). Если 'dtc' вызывается с аргументом -v, он просто печатает свою версию. Ниже приведена соответствующая часть «dtc-version»:
#!/bin/sh
dtc="$*"
MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1)
...
В 14.04 я могу успешно запустить это как
scripts/dtc-version dtc
. В 16.04 этот же вызов терпит неудачу следующим образом :
scripts/dtc-version.sh: line 4: dtc: command not found
Я могу запустить его успешно с помощью этого вызова:
scripts/dtc-version ./dtc
В обеих версиях моя оболочка bash, а моя $ PATH идентична и не включает '. '
Если я добавлю'. ' на мой путь, версия 16.04 работает, используя неприкрытый аргумент «dtc», но это не приемлемое решение, так как битбок кричит на меня, если у меня есть ». на моем пути.
@glenn jackman предоставил соответствующий ключ. Оказывается, что в какой-то момент моя старая система «dtc» была скопирована в «/ usr / bin». В моей старой системе type -a dtc дала dtc is /usr/bin/dtc, а в моей новой системе она дала bash: type: dtc: not found.
Это все часть безумно сложной системы сборки со всеми типами этапов установки и имеет morphed несколько раз. Несмотря на выполнение ряда рабочих инструкций, я должен был пропустить шаг. Мне не приходило в голову, что я пытаюсь «набрать» себя, потому что, очевидно, это не может быть проблемой; -)
Спасибо всем, что прокомментировал !!!