sh diferença de script entre o kubuntu 14.04 e 16.04

0

Estou mudando do Kubuntu 14.04 para o 16.04 começando com uma nova instalação 16.04 e portando meu código e estou vendo uma diferença no processamento do script entre as duas versões.

Aqui está a configuração. Eu estou em um diretório contendo um executável (dtc) e um subdiretório contendo um script sh (dtc-version). Se 'dtc' é invocado com o argumento -v, ele simplesmente imprime sua versão. Aqui está a parte relevante de 'dtc-version':

#!/bin/sh

dtc="$*"
MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1)
...

Em 14.04, posso executar com êxito isso como

scripts/dtc-version dtc

Em 16.04, essa mesma invocação falha da seguinte forma:

scripts/dtc-version.sh: line 4: dtc: command not found

Eu posso executá-lo com sucesso por meio dessa invocação:

scripts/dtc-version ./dtc

Em ambas as versões, meu shell é bash e meu $ PATH é idêntico e NÃO inclui '.'

Se eu adicionar '.' no meu caminho, a versão 16.04 funciona usando o argumento 'dtc' sem adornos, mas essa não é uma solução aceitável, pois bitbake grita comigo se eu tiver '.' no meu caminho.

    
por David H Olson 26.09.2017 / 21:00

1 resposta

0

@glenn jackman forneceu a pista relevante. Acontece que em algum momento do meu antigo sistema 'dtc' havia sido copiado para '/ usr / bin'. No meu antigo sistema, type -a dtc gerou dtc is /usr/bin/dtc enquanto no meu novo sistema ele rendeu bash: type: dtc: not found .

Tudo isso é parte de um sistema de construção incrivelmente complexo com todos os tipos de etapas de configuração e que se transformou várias vezes. Apesar de seguir um conjunto de instruções de trabalho, devo ter pulado um passo. Eu não me ocorreu tentar me 'digitar' porque obviamente isso não poderia ser o problema; -)

Obrigado a todos que comentaram !!!

    
por David H Olson 26.09.2017 / 21:54