私のローカルコンピュータに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
考えられる理由の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)
注:=記号の前後にスペースを含めることはできません。