Ubuntu 15.10にパッケージをインストールしましたが、tcsh
呼び出し方法によってプロンプトが変わりましたtcsh
。
まず、Ubuntu 15.10ではtcsh
実際にはcsh
同じ実行ファイルです。
$ cmp /bin/tcsh /bin/csh && echo 'same' || echo 'different'
same
$ /bin/tcsh
hostname:/tmp>
$ /bin/tcsh -f
>
そして/bin/csh
パーセント記号で終わる
$ /bin/csh
hostname:/tmp%
$ /bin/csh -f
%
.cshrc
まだ1つまたはファイルを設定していません.tcshrc
。tcsh
プロンプトの最後の文字として使用する文字を決定するには、argvの最初の要素を確認してください。
/etc/csh.cshrc
ファイルには、プログラムが呼び出されるとプロンプトを変更するロジックが含まれていますが、tcsh
この方法でプロンプトを設定すると、最後の文字がからに変更される理由は不明>
です%
。このフラグが指定されると、-f
ファイルも無視されます。
# /etc/csh.cshrc: system-wide .cshrc file for csh(1) and tcsh(1)
if ($?tcsh && $?prompt) then
bindkey "\e[1~" beginning-of-line # Home
bindkey "\e[7~" beginning-of-line # Home rxvt
bindkey "\e[2~" overwrite-mode # Ins
bindkey "\e[3~" delete-char # Delete
bindkey "\e[4~" end-of-line # End
bindkey "\e[8~" end-of-line # End rxvt
set autoexpand
set autolist
set prompt = "%U%m%u:%B%~%b%# "
endif
答え1
マニュアルページには表示されませんが、ソースコードはプログラムが呼び出されていることを確認しますtcsh
。その場合はい、コード設定の質問で説明されているヒント:
歴史='!'; HISTSUB = '^'; PRCH = tcsh ? '>': '%'; /* 一般ユーザーの場合、$prompt で %# を置き換える */ PRCHROOT = '#'; /*ルートと同じ*/ word_chars = STR_WORD_CHARS; bslash_quote = 0; / * PWP:tcshスタイルのバックスラッシュ引用符を使用しますか? */
プログラムロジックは読みやすいです。
{ チャート t = strrchr(argv[0], '/'); #ifdef WINNT_NATIVE { char *s = strrchr(argv[0], '\\'); もし t = s; } #endif /* WINNT_NATIVE */ t = ? t + 1:引数[0]; if(* t == '-')t ++; プログラム名 = strsave((t && *t) ? t : tcshstr) /* 絶対 null ではありません */ tcsh = strncmp(プログラム名、tcshstr、sizeof(tcshstr) - 1)== 0; }
そして
static const char tcshstr[] = "tcsh";
tcsh10
たとえば、名前が指定されている場合、テストに合格しない可能性があります。