Pergunta

Alguma questão surge ao adquirir um do seu arquivo Env (uma série de exportação variável)

por exemplo:

...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...

resulta em

$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah

=> "/bin" parece substituir o início da variável em vez de sufixá -la ..

Qualquer ideia?

A propósito, toda vez que obtemos esse arquivo, uma mensagem de erro é relatada:

": Command not found"

O que é estranho .. essa mensagem aparece, apesar de comentarmos todo o seu conteúdo.

A concha invocada no começo parece boa #!/bin/sh, ou #!/bin/bash.

E os personagens de controle? Como selecioná -los no Linux?

Foi útil?

Solução

Isso corrigirá as extremidades da linha no arquivo:

dos2unix my_env.sh

Não há necessidade de um shebang em um arquivo que só será adquirido, pois é executado no shell atual de qualquer maneira. No entanto, como comentário, pode ser informativo para os leitores humanos.

Outras dicas

": Comando não encontrado" é o erro que eu vi quando um script de shell Unix/Linux foi (MIS-) tratado por um sistema MS Windows. Por exemplo, se foi verificado usando um WebCVs, modificado usando o bloco de notas ou o WordPad e depois re-submitido.

(Está reclamando que ele não consegue encontrar o executável [CTRL-M]-que é um nome de arquivo perfeitamente válido, embora extremamente inconveniente e um tanto suspeito para o Unix/Linux).

Execute o arquivo através do GNU cat -A ou o od -x ou hexdump comandos para ver estes (e verificar meu diagnóstico ... ou executá -lo tr -d com a cotação apropriada e o manuseio "literal" do seu sistema. (Por exemplo tr -d '[Ctrl-V],[Ctrl-M]' Sob Bash em um sistema Linux típico).

Dependendo da sua versão de tr Você pode usar: tr -d '\r' ou tr -d \015 (015 é o octal para CR, "Returno de carruagem" ou ^M --- MS-DOS costumados para usar pares de CR/LF como terminação de linha, que é apenas uma das muitas razões pelas quais o MS-DOS pode apodrecer no abismo abandonado Quando se trata de interoperabilidade. Os terminadores de linha de caracteres únicos não causam problemas reais para mais ninguém ... mas os pares causam problemas reais de conversão quando tudo na história da computação convencional usou caracteres únicos para isso).

Oh sim, vim tem um prático set ff (também conhecido como set fileformat opção que pode lidar vim independentemente de qual plataforma você está. Parece que me lembro do vim O padrão é detectar quais tipos de terminação de linha um arquivo está usando e deixá -lo inalterado (e padrão para o nativo da sua plataforma para qualquer novo arquivo, é claro).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top