tcsh の最新リリース 6.24.10 (2023-04-14)
.cshrc
https://github.com/jp-yen/dotfiles/blob/main/csh.cshrc へ上げました
#!/usr/bin/tcsh
set echo_style both
set USER = `whoami`
set HOST = `uname -n`
set path = ( ~/opt/bin $path )
setenv PYTHONPATH ~/opt/lib/python2.7/site-packages
setenv CC /home/pi/opt/bin/gcc
setenv CPP /home/pi/opt/bin/cpp
setenv CXX /home/pi/opt/bin/g++
setenv FC /home/pi/opt/bin/gfortran
setenv AR /home/pi/opt/bin/ar
setenv NM /home/pi/opt/bin/nm
setenv CFLAGS "-I/usr/include/arm-linux-gnueabihf -I$HOME/opt/include -O3 -pipe -march=native"
setenv CXXFLAGS "${CFLAGS}"
setenv LDFLAGS "-L$HOME/opt/lib -Wl,-rpath,$HOME/opt/lib -Wl,-O1 -Wl,-Bsymbolic-functions"
set GCC_LIB_PATH="`echo $HOME/opt/lib{,exec}/gcc/armv7l-unknown-linux-gnueabihf/9.?.0{,/plugin} | tr ' ' '\n' | sort -r | tr '\n' ';'`"
setenv LD_LIBRARY_PATH "$HOME/opt/lib;${GCC_LIB_PATH}/lib";
unset GCC_LIB_PATH
# LD_RUN_PATH
if ( $?prompt ) then
set filec
set ignoreeof
set history = 1000
set fignore = ( .o \~ .aux .log )
set visiblebell
alias c clear
alias JP setenv LANG ja_JP.utf8
alias C unsetenv LANG LC_ALL
( which \python3 >& /dev/null ) && alias _python `which \python3`
( which \screen >& /dev/null ) && alias screen `which \screen` -U
# cygwin や WSL など、/var/run/screen 問題の回避
setenv SCREENDIR $HOME/.screen
if ( ! -d $SCREENDIR ) then
mkdir $SCREENDIR && chmod 700 $SCREENDIR
endif
setenv PAGER more
( which \less >& /dev/null ) && setenv PAGER `which \less`
setenv LESS "-ReFXsc"
setenv LESSOPEN '| /bin/lesspipe %s'
set esc=`printf "\e"`
( which \tput >& /dev/null ) && set TPUT = `which \tput`
if ( $?TPUT ) then
set clr = "`$TPUT sgr0`"
# bold / blink
setenv LESS_TERMCAP_mb "`$TPUT blink`"
setenv LESS_TERMCAP_md "`$TPUT bold`"
# standout-mode start/end (Info box)
setenv LESS_TERMCAP_so "`$TPUT smso`"
setenv LESS_TERMCAP_se "`$TPUT rmso`"
# under-line start/end
setenv LESS_TERMCAP_us "`$TPUT smul ; $TPUT setab 4`"
setenv LESS_TERMCAP_ue "`$TPUT rmul ; $TPUT op`"
# all off
setenv LESS_TERMCAP_me "$clr"
setenv LESS_TERMCAP_zz "$clr" # dummy for printenv
# has 256 color mode?
if ( `$TPUT colors` > 254 ) then
setenv LESS_TERMCAP_md "`$TPUT bold ; $TPUT setab 237`"
setenv LESS_TERMCAP_so "`$TPUT smso ; $TPUT setab 18 ; $TPUT setaf 229`"
setenv LESS_TERMCAP_se "`$TPUT rmso ; $TPUT op`"
setenv LESS_TERMCAP_us "`$TPUT smul ; $TPUT setab 4 ; $TPUT setaf 136`"
endif
unset TPUT
else
set clr = "`printf '\e[0m'`"
setenv LESS_TERMCAP_md "$esc"'[1;44m' # begin bold
setenv LESS_TERMCAP_mb "$esc"'[1;5;31m' # begin blinking
setenv LESS_TERMCAP_me "$clr" # end mode
setenv LESS_TERMCAP_so "$esc"'[5;7;229m' # begin standout-mode - info box
setenv LESS_TERMCAP_se "$clr" # end standout-mode
setenv LESS_TERMCAP_us "$esc"'[4m' # begin underline
setenv LESS_TERMCAP_ue "$esc"'[24m' # end underline
endif
set prompt_char = '#'
if ( ! $?tcsh ) then
[ `id -u` -ne 0 ] && set prompt_char = '%'
alias setprompt 'set prompt="${USER}@${HOST}:${cwd}[\\!]${prompt_char} "'
alias cd 'chdir \!* ; setprompt'
alias pushd 'pushd \!* ; setprompt'
alias popd 'popd \!* ; setprompt'
setprompt
else
set autolist
# csh と tcsh の間で history ファイルに互換性が無いので
set histfile = ~/.thistory
# コマンド履歴の保存設定
set histdup = erase
# history の表示形式を変更しますが、変更すると過去の
# .history ファイルの形式も変わり読めなくなります
# → history がリセットされます
set history = ( 1000 "%h %Y/%W/%D %T %R\n" )
set savehist = ( 1000 merge )
# 連続してログアウトしたり、WLC でログアウトする時に
# 保存が失敗することがあるので、明示的に保存する
alias exit "history -M ; history -S ; exec `which \echo`"
set nobeep
# パスの重複削除
set -f path = ( $path )
# 色付きプロンプト
[ `id -u` -ne 0 ] && set prompt_char = '\%'
set in_screen = `echo $TERM | grep screen | wc -l` >& /dev/null
if ( $in_screen ) then
set prompt_color = "$clr$esc"'[32;44;1m'
else
set prompt_color = "$clr$esc"'[48;5;28;93m'
endif
set prompt = '%{'"$prompt_color"'%}%U%n@%m%u:%B%~%b[%h]'"$prompt_char"'%{'$clr'%} '
set rprompt = '%{'"$prompt_color"'%}%Y-%W-%D %P%{'$clr'%} '
unset in_screen prompt_color
alias ls ls-F
endif
unset esc
unset clr
( which \fortune >& /dev/null ) && fortune -a
endif
# for vim
# vim: set ts=4 fenc=utf-8 ff=unix ft=csh :
Raspberry Pi で使っている .cshrc。csh と tcsh で共用できるようにしています。
.login, .logout は今のところ使ってません。
CC, LD ...の環境変数は octave 5.1.0 のコンパイル が由来。
※octave は最後のリンクが失敗してしまい、build できませんでした。
このパスに gcc や、ld が無いと色々と問題が起きますのでコピペには注意。
history の形式を変えても履歴を引き継ぐためには .cshrc を書き換える前に
- バックアップを取る
cp .history .history.old - ファイルを読みこむ (現在の history とマージする)
history -M - 保存先を変える
set histfile = ~/.thistory - 書式を変える
set history = ( 1000 "%h %Y/%W/%D %T %R\n" ) - 変わった書式で保存する
history -S - 書き換える
vi .cshrc
複数のターミナルウィンドウでtcsh履歴を保持する によると postcmd を設定しなさいという話もあるのですが、これを設定すると上手くいきませんでした。
tcsh の場合、prompt や rprompt で色を使っていて、screen 環境に入っているかどうかで色を変えています。rprompt の後ろの空白が無いと色が漏れ出てしまいすごく使いにくいですので忘れないように。
この問題については、制御文字が後続文字の色を変更するため、後続文字が無い rprompt では色を変えて終了することができないとのことでした。
https://github.com/tcsh-org/tcsh/issues/18
rprompt の後ろに以下の Unicode ゼロ幅文字を試してみましたが上手くいきませんでした。残念。
文字コード | 意味 |
---|---|
U+200B | ゼロ幅空白 |
U+200C | ゼロ幅非接合子(筆記体の時の制御) |
U+200D | ゼロ幅接合子(筆記体の時の制御) |
U+FEFF | ゼロ幅のノーブレークスペース |
他にも空白文字は色々とありそうですが上手くいく文字が無いか、どなたか試してみませんが?👉 \sが完全には空白文字を網羅できていなかった件 |
また、LESS_TERMCAP_* で bold をグレーバックにしたり、underline を青バックにしたり、検索対象の反転を黄色バックにしたりしています。(256色環境かそうでないかで色を変えています)
また、printenv した時などに見難いので LESS_TERMCAP_zz のダミー変数を設定し、属性をクリアしています。