私はSolarisシステムにTelnetで接続していますが、スクリプトで上記のエラーが発生します。私はこれが一般的な問題であることを知っており、解決策は私のプロフィールで「stty Erase ^ H」行をチェックすることですが、見つかりません。
.profileにはsttyへの参照はなく、どこにも.cshrcはありません。ホームディレクトリでgrepを実行しましたが、何も取得できませんでした。
この問題の他の原因はありますか?オンラインのすべてのソリューションは.profileまたは.cshrcを参照しています。ありがとうございます。
答え1
-
プロファイルを追跡するには、印刷用およびオプションで始まる名前を使用してログインシェルを呼び出します-x
。ログインシェルが何であるかを調べるには、getent passwd $USER
ログインシェルが行の最後のフィールドです(通常/bin/something
)。名前で始まるシェルを呼び出すには、名前-
で始まるシンボリックリンクを作成して-
実行します。たとえば、ログインシェルがkshの場合:
ln -s /bin/ksh ./-ksh
./-ksh -x
rm ./-ksh
これがcshで動作するかどうかはわかりません。興味深いものが見つからない場合は、/etc
ドットファイルを見てください。
grep stty /etc/* ~/.* 2>/dev/null
答え2
私はこれを持っており、stty
.kshrcにいます。 .kshrcは、すべてのkshスクリプト(対話型と非対話型)で始まります。ファイル(今はttyではない)であるstdinで操作を試み、エラーで失敗するスクリプトを実行すると、sttyは引き続き実行されます。
答え3
cshのマニュアルページから:
ログインシェルはまずシステムファイルからコマンドを実行します。/etc/csh.cshrcそして/etc/csh.login。次に、ユーザーのホームディレクトリにあるファイルからコマンドを実行します。~/.tcshrc(+) または ~/.tcshrc が見つからない場合、~/.cshrc、その後~/.歴史(またはhistfileシェル変数の値)、その後~/.ログイン、ついに~/.cshdirs(またはdirsfileシェル変数の値)(+)。シェルは /etc/csh.cshrc の後に代わりに /etc/csh.login を読み取ることができます。コンパイルされた場合)。 ;バージョンシェル変数を参照してください。 (+)
したがって、この行を見つけることができるいくつかのファイルがあります。
答え4
tty
test tty: を使用することもできますtty -s && stty erase ^H
。
tty -s
戻りコードは、現在の接続がttyかどうかを指定します。