problema com o carregamento de tcshrc

2

Eu tenho o Ubuntu 16.04 instalado no meu PC local e estou tentando tornar meu ambiente de trabalho semelhante ao modo como ele é configurado no meu trabalho

para conseguir isso eu queria usar o mesmo arquivo tcshrc (sim, usamos tcsh, não sei por que ...)

de qualquer forma, quando eu tento abrir um terminal tcsh (ou para a origem ~ / .tcshrc para o assunto) estou recebendo um erro:

set: Variable name must begin with a letter.

tentando isolar a causa, descobri que as próximas linhas são suficientes para causar isso

#!/bin/tcsh
echo 0
set history = 2000  # this line is not the cause, verified by echoing
echo 1
set savehist = (2000 merge)
echo 2

saída:

0
1
set: Variable name must begin with a letter.

quando eu tento executar o set savehist = (mesclagem 2000) como um comando shell regular, o terminal não mostra nenhum erro.

Claro que no meu trabalho o tcshrc está funcionando bem. em ambos tenho tcsh 6.18.01 instalado

qualquer ajuda é bem vinda

obrigado

    
por user2717954 21.10.2017 / 22:12

2 respostas

5

Um possível motivo: você tem um caracter inválido, acidentalmente adicionado ao criar o arquivo. Teria que ser algo que normalmente não é (muito) visível, por exemplo, um espaço sem quebra ou algum tal.

$ cat test.csh
set foo = bar
$ tcsh test.csh 
set: Variable name must begin with a letter.

$ od -c test.csh
0000000   s   e   t     342 201 240   f   o   o       =       b   a   r
0000020  \n
0000021

Esse era um marceneiro de palavras de largura zero, que na verdade não é impresso no meu sistema.

Algo assim od acima deve mostrar o que realmente existe.

A maneira mais fácil de se livrar de caracteres como esse é, provavelmente, apenas encontrar a (s) linha (s) ofensiva (s) a partir das mensagens de erro e redigitá-las do zero. (ou depuração de impressões em vez de mensagens de erro, já que tcsh não parece dar números de linha neles. oh bem.)

Mas se você quiser, pode canalizar todo o arquivo por meio de algo como tr -d '0-7' , o que removeria todos os bytes com o bit alto definido. (Isto é, assumindo que o arquivo é codificado em UTF-8, e que tr funciona como parece funcionar em meu sistema, em bytes, não em caracteres reais, e que não há nenhum outro caracteres não-ASCII que você gostaria de manter. Faça backups.)

    
por 21.11.2017 / 21:58
0

Tenha no arquivo.tcshrc simplesmente:

set history=2000 
set savehist=(2000 merge)

Observação: não há espaços na frente ou após o sinal =.

    
por 21.11.2017 / 19:22

Tags