Я перемещаюсь от Kubuntu 14.04 до 16,04 путем запуска с новых 16,04 установок и портирования моего кода и вижу различие в обработке сценария между этими двумя версиями.
Вот установка. Я нахожусь в каталоге, содержащем и исполняемый файл (dtc) и подкаталог, содержащий sh сценарий (dtc-версия). Если 'dtc' вызывается с-v аргументом, он просто печатает свою версию. Вот соответствующая часть 'dtc-версии':
#!/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
В обеих версиях моя оболочка является ударом, и мой $PATH идентичен и НЕ включает '.'
Если я добавляю '.' к своему пути, 16,04 работ версии с помощью неукрашенного 'dtc' аргумента однако, который не является приемлемым решением как bitbake вопли во мне, если я имею в своем пути.
@glenn jackman дал соответствующее представление. Оказывается, что в какой-то момент в моей старой системе 'dtc' был скопирован в '/usr/bin'. В моей старой системе, type -a dtc
уступил dtc is /usr/bin/dtc
, в то время как в моей новой системе она уступила bash: type: dtc: not found
.
Это - вся часть безумно сложной системы сборки со всеми видами шагов установки, и это несколько раз превращалось. Несмотря на следующий ряд рабочих инструкций, я, должно быть, пропустил шаг. Я не произошел со мной, попытка 'вводит' меня, потому что, очевидно, который не мог быть проблемой ;-)
Благодаря всему, что прокомментировало!!!