LinuxでのC言語開発環境について〜環境設定.bashrcの例〜
- メモ
- いろんなサイトを参考した(多すぎて覚えてない)
- ファイルリスト
.bashrc .etc/env.sh .etc/bashrc
- .bashrc
if [ -f ~/.etc/env.sh ]; then . ~/.etc/env.sh fi if [ -f ~/.etc/bashrc ]; then . ~/.etc/bashrc fi
- .etc/env.sh
######################################## # 環境の設定 #export LANGUAGE=ja_JP.SJIS export LANG=ja_JP.UTF-8 export LC_ALL=ja_JP.UTF-8 export TZ=JST # Subversionでコミットコメント書く際のエディタ設定 export SVN_EDITOR='vim' # indentコマンドで自動設定される設定値ファイル export INDENT_PROFILE=${HOME}/.etc/indent.pro # 編集ツールをviに設定 export EDITOR=vi # man とかを見るときはいつも less を使う #export PAGER=less # LESSの設定 #export JLESSCHARSET=japanese-sijs #export LESSCHARSET=japanese-sjis export LESS='-c -m -x4' #export LESS="-isnMCd" #export LESS='-X -F -i -m' #export LESSCHARSET="latin1" #export LESSCHARDEF=8bcccbcc18b95.33b33b. #export LESSBINFMT='*n-' #export LESSOPEN="|/usr/bin/lesspipe.sh %s" # manの設定 #export MANPATH=/usr/bin/man:/usr/local/man:/usr/share/man:/sw/man #export MANPAGER=/usr/bin/less #export MANWIDTH=80 # パスの設定 export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:$HOME/bin #export RUBYLIB=$HOME/lib/ruby #export PERL5LIB=$HOME/lib/perl ######################################## # alias設定 alias ls='ls -F --color' alias ll='ls -l' alias lh='ls -lh' alias ld='ls -ld' alias l='ls' alias sl='ls' alias la='ls -A' alias lla='ls -lA' alias llr='ls -ltrA' # サイズはK,M,Gで表示 alias df='df -h' alias du='du -h' alias 644='chmod 644' alias 755='chmod 755' alias view='vi -R' # 拡張正規表現,色づけ export GREP_COLOR='1;37;41' alias grep='grep -E --color=auto' # -iは確認を行う。-vは詳細な情報の表示 alias cp='cp -iv' alias mv='mv -iv' alias rm='rm -iv' # odは16進数でのバイナリダンプコマンド # -tx1zは、1バイトごとに区切って表示 # -Axはアドレスを16進数表示、-vは連続する0をスキップしない alias od='od -tx1z -Ax -v' alias cdp='cd -P' alias pwdp='pwd -P'
- .etc/bashrc
######################################## # 自環境の設定 # 新しく作られたファイルのパーミッションがつねに 644 になるようにする umask 022 # core作る ulimit -c unlimited # core作らない #ulimit -c 0 ######################################## # historyの設定 #--------------------------------------- # 各端末間で履歴の共有をする function share_history { # 以下の内容を関数として定義 history -a # .bash_historyに前回コマンドを1行追記 history -c # 端末ローカルの履歴を一旦消去 history -r # .bash_historyから履歴を読み込み直す } # 上記関数をプロンプト毎に自動実施 後で設定 #PROMPT_COMMAND='share_history' shopt -u histappend # .bash_history追記モードは不要なのでOFFに #--------------------------------------- # "!"をつかって履歴上のコマンドを実行するとき、 # 実行するまえに必ず展開結果を確認できるようにする。 shopt -s histverify #--------------------------------------- # 履歴のサイズ。 export HISTSIZE=19999 # 履歴のMAX保存数を指定 # export HISTFILESIZE=49999 #ファイルに格納する保存数HISTSIZEと同じなので省略 #--------------------------------------- # 記録する内容を設定 # ignoredups:入力が最後のヒストリと一致する場合に記録しない # ignorespace:スペースやタブで始まる行をヒストリに記録しない # ignoreboth:ignorespaceとignoredups両方を指定 # 指定なし:すべての入力をヒストリに記録する export HISTCONTROL=ignoredups # 履歴に入れないもの HISTIGNORE="ls:la:ll:h:H:cd" #--------------------------------------- # 履歴にタイムスタンプを追加 #export HISTTIMEFORMAT="%y/%m/%d %H:%M:%S: " export HISTTIMEFORMAT='%Y-%m-%d %T: ' #--------------------------------------- # Ctrl+R の検索は使いづらいので下記を追加 # h: 直前の履歴 30件を表示する。引数がある場合は過去 1000件を検索する。 # (history で履歴全部を表示させると多すぎるので) function h { if [ "$1" ]; then history 1000 | grep "$@"; else history 30; fi } # H: 直前の履歴 30件を表示する。引数がある場合は過去のすべてを検索する。 function H { if [ "$1" ]; then history | grep "$@"; else history 30; fi } #--------------------------------------- # fcコマンド拡張 #function fceditor () { tt=/tmp/$$.sh; cat $1 | ( read -rd '' s; t=/tmp/$$; echo "function a(){" > $t; echo "$s" >> $t; echo -e " }\n declare -f a" >> $t; chmod +x $t; $t > /dev/null 2>&1; if [ $? = 0 ]; then a=`$t|sed '1,2d;$d;s/....//'`";"`echo "$s"|tail -1|sed 's/^.\+\(#[^#]\+\)$/\1/'`; else a="$s"; fi; rm $t; echo "$a" ) > $tt; vim $tt; sed 's/^ *//' $tt > $1; rm $tt; } #export FCEDIT=fceditor ######################################## # 端末・プロンプトの設定 #--------------------------------------- # 色設定 export CR="$(echo -ne '\r')" export LF="$(echo -ne '\n')" export TAB="$(echo -ne '\t')" export ESC="$(echo -ne '\033')" export C_BLACK="${ESC}[30m" export C_RED="${ESC}[31m" export C_GREEN="${ESC}[32m" export C_YELLOW="${ESC}[33m" export C_BLUE="${ESC}[34m" export C_MAGENTA="${ESC}[35m" export C_CYAN="${ESC}[36m" export C_WHITE="${ESC}[37m" export C_HIGHLIGHT_BLACK="${ESC}[30;1m" export C_HIGHLIGHT_RED="${ESC}[31;1m" export C_HIGHLIGHT_GREEN="${ESC}[32;1m" export C_HIGHLIGHT_YELLOW="${ESC}[33;1m" export C_HIGHLIGHT_BLUE="${ESC}[34;1m" export C_HIGHLIGHT_MAGENTA="${ESC}[35;1m" export C_HIGHLIGHT_CYAN="${ESC}[36;1m" export C_HIGHLIGHT_WHITE="${ESC}[37;1m" export C_DEFAULT="${ESC}[m" #--------------------------------------- # 現在のユーザによってプロンプトの色を変える。 rootは赤 case "$UID" in 0) U_col=${C_RED};; *) U_col=${C_GREEN};; esac #--------------------------------------- # screenの時はwindow番号をホストの後につける # sshで入っているときは、アクセス元IPをさらにその後ろにマゼンダで PS_USER="\[${U_col}\]\u\[${C_DEFAULT}\]" PS_HOST="\[${C_GREEN}\]\h\[${C_DEFAULT}\]" PS_WORK="\[${C_HIGHLIGHT_CYAN}\]\W\[${C_DEFAULT}\]" PS_HIST="\[${C_HIGHLIGHT_BLUE}\]\!\[${C_DEFAULT}\]" if [ -n "${SSH_CLIENT}" ] ; then PS_SSH="\[${C_MAGENTA}\]/$(echo ${SSH_CLIENT} | sed 's/ [0-9]\+ [0-9]\+$//g')\[${C_DEFAULT}\]" else PS_SSH="" fi if [ -n "${WINDOW}" ] ; then PS_SCREEN="\[${C_CYAN}\]#${WINDOW}\[${C_DEFAULT}\]" else PS_SCREEN="" fi #--------------------------------------- # [ (ユーザ名/黒) @ (ホスト名/緑) (履歴番号/青) : (ワーキングディレクトリ/明るい白) ] \$ #export PS1="[${PS_USER}@${PS_HOST}${PS_SCREEN}${PS_SSH} ${PS_HIST}:${PS_WORK}]\$ " # 長いので短く export PS1="[${PS_USER}@${PS_HOST}${PS_SCREEN} ${PS_HIST}:${PS_WORK}]\$ " ######################################## # その他function定義 # つねに直前のコマンドの終了状態をチェックさせる。 # もし異常終了した場合は、その状態(数値)を表示する。 function showexit { local s=$? if [[ $s -eq 0 ]]; then return; fi echo "exit $s" } function prompt_cmds { showexit share_history } PROMPT_COMMAND=prompt_cmds # globalコマンドで関数名検索時に関数名補完させる function global_funcs() { local cur cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=(`global -c $cur`) } complete -F global_funcs global