tcshrc를 로드하는 중에 문제가 발생했습니다.

tcshrc를 로드하는 중에 문제가 발생했습니다.

내 로컬 컴퓨터에 ubuntu 16.04가 설치되어 있고 직장에서 구성한 방식과 비슷하게 작업 환경을 만들려고 합니다.

이를 달성하기 위해 동일한 tcshrc 파일을 사용하고 싶습니다(예, 우리는 tcsh를 사용합니다. 이유는 모르겠습니다...)

어쨌든, tcsh 터미널(또는 소스 ~/.tcshrc)을 열려고 하면 오류가 발생합니다:

set: Variable name must begin with a letter.

이유를 알아내려고 노력하면서 다음 몇 줄만 있어도 문제가 발생한다는 것을 알았습니다.

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

산출:

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

내가 달리려고 할 때 savehist 설정 = (2000 병합)일반 쉘 명령으로 터미널에는 오류가 표시되지 않습니다.

물론 내 직장에서는 tcshrc가 잘 작동한다. 둘 다 tcsh 6.18.01을 설치했습니다.

어떤 도움이라도 환영합니다

감사해요

답변1

한 가지 가능한 이유는 실제로 파일을 생성할 때 실수로 추가된 잘못된 문자가 있다는 것입니다. 일반적으로 (매우) 눈에 띄지 않는 것이어야 합니다.잘리지 않는 공백아니면 그런 것.

$ 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

이는 너비가 0인 단어 커넥터이며 실제로 내 시스템에서 인쇄되지 않습니다.

위와 같은 것이 od실제로 무엇인지 알려줄 것입니다.

아마도 이러한 문자를 제거하는 가장 쉬운 방법은 오류 메시지에서 문제가 되는 줄을 찾아서 처음부터 다시 입력하는 것입니다. (또는 tcsh줄 번호가 거기에 제공되지 않는 것 같아서 오류 메시지 대신 디버그 인쇄를 합니다. 아 뭐.)

그러나 원할 경우 유사한 방식으로 전체 파일을 파이프할 수 있습니다 tr -d '\200-\377'. 그러면 상위 비트가 설정된 모든 바이트가 제거됩니다. (즉, 파일이 UTF-8로 인코딩되어 있고 tr실제 문자가 아닌 바이트 단위로 내 시스템에서 작동하는 것 같다고 가정하면,그리고ASCII가 아닌 다른 문자는 보존하고 싶지 않습니다. 백업을 하세요. )

답변2

.tcshrc 파일은 간단합니다.

set history=2000 
set savehist=(2000 merge)

참고: = 기호 앞뒤에는 공백이 있을 수 없습니다.

관련 정보