Dotfiles.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

356 lines
14 KiB

12 years ago
#!/bin/bash ####################################################################
#
# Изменён: вт 02 ноя 2021 12:29:31
12 years ago
#
################################################################################
################################ Общие настройки ###############################
# {{{ Переменные окружения
################################################################################
export BASH_ENV="$HOME/.bashrc" #Файл настроек интерпретатора
export SHELLRC="$HOME/.shellrc" #Путь к директории настроек
export BASHRC="$SHELLRC/etc/shell/bash" #Путь к настройкам bash
export INPUTRC="$BASHRC/inputrc" #Файл inputrc
export PLATFORM="$(uname -s | tr 'A-Z' 'a-z')" #Тип ОС
12 years ago
export MANPATH="$MANPATH:/home/maks/.shellrc/var/man" #Локальные файлы руководства
export GTK_IM_MODULE="xim" #Метод ввода Χ
export QT_IM_MODULE="xim" #Метод ввода Χ
source "$SHELLRC/etc/wm/xdg/user-dirs.dirs"
export HSTR_CONFIG="keywords-matching,blacklist,hicolor" #hstr
export HSTR_PROMPT="> "
11 years ago
export STARDICT_DATA_DIR=$SHELLRC/etc/soft/sdcv/dictionaries/
export SDCV_HISTSIZE=10000
#export SDCV_PAGER=less
7 years ago
# export TERM=xterm
export TERM=xterm-256color
12 years ago
export GUILE_HISTORY="$SHELLRC/var/shell/guile.history" #История guile
export GUILE_AUTO_COMPILE=0 #Запрет на автокомпиляцию
export PAGER=less #Страничный просмотрщик
export VISUAL="nvim -p" #Стандартный редактор
export EDITOR="nvim -p" #Стандартный редактор
12 years ago
export HELPSRC=()
#Отображать статус прокрутки.
#Интерпретировать контрольные последовательности.
#Выходить автоматически, если текст помещается на экран.
12 years ago
#Не очищать экран при выходе.
#Подсвечивать только текущий результат поиска.
#Объединять подряд идущие пустые строки.
12 years ago
#Игнорировать регистр при поиске.
#Подсвечивать новую строку при пролистывании экрана.
#Показывать результат поиска в центре.
export LESS="-M -R -F -X -g --squeeze-blank-lines --ignore-case -w --jump-target=.5"
12 years ago
export LESSOPEN="|/usr/bin/lesspipe.sh %s"
export LESSHISTFILE=/dev/null
export LESSCOLOR=yes
4 years ago
#Цвета ls
export LS_COLORS=$(cat $BASHRC/ls_colors_generated)
#Системная локаль
export LC_ALL=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
12 years ago
export IGNOREEOF=3 #Закрывать оболочку по 3м C-d
export LOGDIR=$SHELLRC/var/log #Директория журналов скриптов
export MD=$SHELLRC/var/mail/ #Директория почты
export MAILCAPS=$SHELLRC/etc/mail/mailcap/mailcap #~/.mailcap
12 years ago
export CRON=$SHELLRC/etc/cron/crontab #Задания cron
export TMP="/tmp" #Директория временных файлов
#Настройки nnn
export NN_USE_EDITOR=1
12 years ago
#Настройки cw
export NOCOLOR_PIPE=1
#export CW_INVERT=1
#Настройки компилятора
11 years ago
export CFLAGS="-O2 -pipe"
export MAKEOPTS="-j $(getconf _NPROCESSORS_ONLN)"
12 years ago
#Формат времени, выводимый командой time
# real 0m32.155s
# user 0m0.357s
# sys 0m0.343s
# CPU 2.17%
#
export TIMEFORMAT=$'real\t%3lR\nuser\t%3lU\nsys\t%3lS\nCPU\t%P%'
#Настройка прокси
12 years ago
export http_proxy=
export HTTP_PROXY=
# http_proxy=http://127.0.0.1:8118/
# proxy_address=$http_proxy
# HTTP_PROXY=$http_proxy
# export http_proxy HTTP_PROXY proxy_address
# }}} ##########################################################################
# {{{ Опции подсветки
################################################################################
#Настройка цветовых кодов
rstc="\033[00m"
magenta="\033[0;35m"
12 years ago
yellow="\033[1;33m"
blue="\033[1;36m"
red="\033[1;31m"
green="\033[1;32m"
grey="\033[0;37m"
white="\033[1;1m"
#Подсветка результатов grep
export GREP_COLOR='1;31'
#Настройка подсветки мануалов
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;34;43m'
12 years ago
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
# }}} ##########################################################################
# {{{ Настройка путей
################################################################################
# removes duplicate paths
# NOTE: symlinks aren't dereferenced (e.g., using `readlink`) as they may
# exist for compatibility reasons
#- Удаление директории(й) из PATH
path-- () {
local IFS=':'
local newpath
local i
for i in ${!2}; do
if [[ "$i" != "$1" ]]; then
12 years ago
newpath=${newpath:+$newpath:}$i
fi
done
export $2="$newpath"
}
#- Добавление директории(й) в PATH. path++ d:i:r:s PATH [before]
path++ () {
local IFS=':'
local oldpath
local i
for i in $1; do
if [[ -d "$i" ]]; then
12 years ago
if [ -z "${!2:-}" ]; then
export $2=""
fi
path-- $i $2
if [ "${3:-}" = "before" ]; then
export $2="$i:${!2:+${!2}}"
else
export $2="${!2:+${!2}:}$i"
fi
#else
#echo "$i is not a directory" >&2
12 years ago
fi
done
}
INIT_PATH=$PATH
if [ $UID -eq 0 ]; then
TMOUT=600
PROMPT_COLOR='\033[1;31m'
export HOME=/root
# root's inputrc
bind -f "$BASHRC/inputrc.root" 2>/dev/null
6 years ago
path++ $INIT_PATH PATH
12 years ago
path++ /sbin PATH
path++ /usr/sbin PATH
path++ /usr/local/sbin PATH
else
PROMPT_COLOR='\033[1;32m'
6 years ago
path++ $INIT_PATH PATH
#export HOME=$HOME
12 years ago
fi
# }}} ##########################################################################
# {{{ Подключение псевдонимов
################################################################################
[ -f "$BASHRC/aliases" ] && ALIASES="$BASHRC/aliases" && . "$ALIASES" && HELPSRC+=("$ALIASES")
12 years ago
#Раскрывать псевдонимы в скриптах
6 years ago
# shopt -s expand_aliases
12 years ago
# }}} ##########################################################################
6 years ago
# {{{ Загрузка системоспецифичных настроек
12 years ago
################################################################################
[[ -f "${BASHRC}/bashrc_${PLATFORM}" ]] && . "${BASHRC}/bashrc_${PLATFORM}"
12 years ago
# }}} ##########################################################################
[[ "$-" != *i* ]] && return
######################## Настройки интерактивного режима #######################
# {{{ Настройка приглашения
################################################################################
[ -n "$SSH_CLIENT" ] && PROMPT_SSH="[${red}ssh${PROMPT_COLOR}]"
#
# ┌─(0)─[hostname]─[~/path]
# └─(I)─[17:50:40]$
#
PROMPT_COMMAND='__prompt_command; history -a'
__prompt_command() {
local EXIT="$?"
# ┌─(0)─[hostname]─[VIFM: ~/path:git-branch]
# └─(I)─[17:50:40]$
local PS1_JOBS="\[${PROMPT_COLOR}\]┌─(\[${yellow}\]\j\[${PROMPT_COLOR}\])"
local PS1_HOST="─[\[${yellow}\]\h\[${PROMPT_COLOR}\]]\[${PROMPT_SSH}\]"
# Сокращение текущей директории. В отличие от PROMPT_DIRTRIM выводит две директории в начале пути
local PS1_PWD=$(pwd | sed 's@'$HOME'@~@; s@^\(\([~/][^/]*\)\{2\}/\).*\(\(/[^/]*\)\{2\}\)$@\1...\3@')
4 years ago
local PS1_GIT_USER=$(git branch &> /dev/null && git user 2> /dev/null | sed -e 's/^/ (/' -e 's/$/)/')
local PS1_GIT_BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1/')
local PS1_PATH="─[\[${red}\]${VIFM_SHELL}\[${yellow}\]${PS1_PWD}\[${PROMPT_COLOR}\]\[${magenta}\]${PS1_GIT_BRANCH}${PS1_GIT_USER}\[${PROMPT_COLOR}\]]"
PS1="${PS1_JOBS}${PS1_HOST}${PS1_PATH}\n\[${PROMPT_COLOR}\]─[\[${PROMPT_COLOR}\]\t]"
if [ $EXIT != 0 ]; then
PS1+="\[${red}\]\\$ \[${rstc}\]"
else
PS1+="\[${green}\]\\$ \[${rstc}\]"
fi
}
12 years ago
5 years ago
export PS2="$green-> $rstc"
export PS3="$green+> $rstc"
# + filename.sh:00NN: function(): command
export PS4='$(printf "+ \033[1;32m%s:\033[0;36m%04d: \033[1;35m%s\033[00m" $(basename $BASH_SOURCE) $LINENO ${FUNCNAME[0]:+${FUNCNAME[0]}():\ })'
12 years ago
export CDPATH=".:~/FILES:~/FILES/Projects:~/Downloads"
12 years ago
export PROMPT_DIRTRIM=3 #В приглашении показывать 3 директории
# }}} ##########################################################################
# {{{ Настройка автодополнения
################################################################################
export BASH_COMPLETION="$BASHRC/bash_completion"
[ -f "$BASHRC/bash_completion" ] && . "$BASHRC/bash_completion"
[ -f "$BASHRC/bash_completion_custom" ] && . "$BASHRC/bash_completion_custom"
12 years ago
# }}} ##########################################################################
# {{{ Настройка истории команд
################################################################################
#Раздельная история для рута и пользователя
export HISTFILE=$SHELLRC/var/shell/bash.history-$(whoami | awk '{print $1}';exit)
export HISTSIZE=100000 #Размер истории
export HISTFILESIZE=900000 #Размер файла истории
export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S ' #Формат записи истории
export HISTCONTROL="ignoreboth" #Игнорировать '^ ' и дубликаты
export HISTIGNORE="&:[bf]g:h:c:exit:,ww:dirs:~:..:.-:,w,w:,m:ls:\:q:t:\?" #Не записывать в историю
12 years ago
# }}} ##########################################################################
# {{{ Прочие настройки
################################################################################
#Права на создаваемые файлы
if [ $UID -eq 0 ]; then
# -rw-r--r--
umask 0022
else
# -rw-------
umask 0077
fi
12 years ago
shopt -s progcomp
shopt -s histappend #Не добавлять команды, не переписывая историю
shopt -s cmdhist #Сохранение многострочной команды в одной строке
shopt -s cdable_vars #Аргументы cd могут быть переменными
shopt -s cdspell #Исправление ошибок в именах директорий
shopt -s checkhash #Проверка на существование команд в хеш-таблице
shopt -s lithist #Заменять ';' на '\n' в многострочных командах
shopt -s histreedit #Повторное редактирование команды
shopt -s promptvars #Раскрывать значения переменных в приглашении
shopt -s hostcomplete #Дополнение имен хостов (@...)
shopt -s interactive_comments #Игнорирование строк, начинающихся на #
shopt -s dotglob #Подстановка скрытых файлов
shopt -s nocaseglob #Подстановка без учета регистра
shopt -s checkwinsize #Проверять размер окна терминала
shopt -s no_empty_cmd_completion #Не дополнять пустую строку
shopt -s xpg_echo #echo -e -E
shopt -s extglob #Расширенное сопоставление с образцами
shopt -s globstar #Включение масок ** и **/ (рекурсивный перебор)
shopt -s autocd #Интерпретировать команды как параметры cd
shopt -s checkjobs #При выходе проверять фоновые задания
shopt -s dirspell #Исправление имен директорий при автодополнении
set -o noclobber #Не перезаписывать существующие файлы (для перезаписи использовать >|)
12 years ago
# ?(шаблон) Количество появлений указанного шаблона, равное нулю или единице
# *(шаблон) Количество появлений указанного шаблона, равное нулю или больше
# +(шаблон) Одно или большее количество появлений указанного шаблона
# @(шаблон) Одно появление указанного шаблона
# !(шаблон) Всё, кроме одного появления указанного шаблона
#Привычные комбинации клавиш для режима vi
bind -m vi-command ".":insert-last-argument
bind -m vi-insert "\C-l.":clear-screen
bind -m vi-insert "\C-a.":beginning-of-line
bind -m vi-insert "\C-e.":end-of-line
bind -m vi-insert "\C-w.":backward-kill-word
bind -m vi-insert "\C-o":history-search-backward
bind -m vi-insert "\C-k":kill-line
# bind -m vi-insert "\C-n":history-search-forward
bind '"\e\C-e":shell-expand-line'
bind '"\e[Z":shell-expand-line'
bind '"\C-x*":glob-expand-word'
bind '"\e\C-g":glob-expand-word'
bind '"\C-f":"vifm\n"'
#hstr
bind '"\C-r": "\C-ahh \C-j"'
7 years ago
# bind '"\C-r": "\C-aprintf \033c\e]20;;100x100+1000+1000\a \C-j"'
9 years ago
#commacd
source "$SHELLRC/etc/shell/bash/commacd"
9 years ago
# alias grep="/usr/bin/grep $GREP_OPTIONS"
unset GREP_OPTIONS
#Исправление ошибок с набором акцентов
# if [ "$TERM" == "xterm" ]; then
printf '\33]701;%s\007' "$LANG"
# fi
12 years ago
# }}} ##########################################################################