#!/bin/bash #################################################################### # # Изменён: Пн 12 окт 2020 13:01:45 # ################################################################################ ################################ Общие настройки ############################### # {{{ Переменные окружения ################################################################################ export BASH_ENV="$HOME/.bashrc" #Файл настроек интерпретатора export SHELLRC="$HOME/.shellrc" #Путь к директории настроек export BASHRC="$SHELLRC/etc/shell/bash" #Путь к настройкам bash export INPUTRC="$BASHRC/inputrc" #Файл inputrc 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="> " export STARDICT_DATA_DIR=$SHELLRC/etc/soft/sdcv/dictionaries/ export SDCV_HISTSIZE=10000 #export SDCV_PAGER=less # export TERM=xterm export TERM=xterm-256color 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" #Стандартный редактор export HELPSRC=() #Не очищать экран при выходе. #Игнорировать регистр при поиске. #Подсвечивать новую строку при пролистывании экрана. #Показывать результат поиска в центре. export LESS="-X --ignore-case -w --jump-target=.5" export LESSOPEN="|/usr/bin/lesspipe.sh %s" export LESSHISTFILE=/dev/null export LESSCOLOR=yes #Системная локаль export LC_ALL=ru_RU.UTF-8 export LC_CTYPE=ru_RU.UTF-8 export IGNOREEOF=3 #Закрывать оболочку по 3м C-d export LOGDIR=$SHELLRC/var/log #Директория журналов скриптов export MD=$SHELLRC/var/mail/ #Директория почты export MAILCAPS=$SHELLRC/etc/mail/mailcap/mailcap #~/.mailcap export CRON=$SHELLRC/etc/cron/crontab #Задания cron export TMP="/tmp" #Директория временных файлов #Настройки nnn export NN_USE_EDITOR=1 #Настройки cw export NOCOLOR_PIPE=1 #export CW_INVERT=1 #Настройки компилятора export CFLAGS="-O2 -pipe" export MAKEOPTS="-j $(getconf _NPROCESSORS_ONLN)" #Формат времени, выводимый командой 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%' #Настройка прокси 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" 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;44;33m' 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 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 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 fi done } INIT_PATH=$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 path++ $INIT_PATH PATH path++ /sbin PATH path++ /usr/sbin PATH path++ /usr/local/sbin PATH else PROMPT_COLOR='\033[1;32m' path++ $INIT_PATH PATH #export HOME=$HOME fi # }}} ########################################################################## # {{{ Подключение псевдонимов ################################################################################ [ -f "$BASHRC/aliases" ] && ALIASES="$BASHRC/aliases" && . "$ALIASES" && HELPSRC+=("$ALIASES") #Раскрывать псевдонимы в скриптах # shopt -s expand_aliases # }}} ########################################################################## # {{{ Загрузка системоспецифичных настроек ################################################################################ case "$(uname -s)" in "Linux") [[ -f $BASHRC/bashrc_linux ]] && . "$BASHRC/bashrc_linux";; "Cygwin") [[ -f $BASHRC/bashrc_cygwin ]] && . "$BASHRC/bashrc_cygwin";; "Darwin") [[ -f $BASHRC/bashrc_macos ]] && . "$BASHRC/bashrc_macos";; esac # }}} ########################################################################## [[ "$-" != *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@') local PS1_GIT=$(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}${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 } 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]}():\ })' export CDPATH=".:~/FILES:~/FILES/Projects:~/Downloads" 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" # }}} ########################################################################## # {{{ Настройка истории команд ################################################################################ #Раздельная история для рута и пользователя 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:~:..:,-:,w,w:,m:ls:\:q:t:\?" #Не записывать в историю # }}} ########################################################################## # {{{ Прочие настройки ################################################################################ #Права на созданные файлы: # -rw------- umask 0077 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 #Исправление имен директорий при автодополнении # ?(шаблон) Количество появлений указанного шаблона, равное нулю или единице # *(шаблон) Количество появлений указанного шаблона, равное нулю или больше # +(шаблон) Одно или большее количество появлений указанного шаблона # @(шаблон) Одно появление указанного шаблона # !(шаблон) Всё, кроме одного появления указанного шаблона #Привычные комбинации клавиш для режима 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 #hstr bind '"\C-r": "\C-ahh \C-j"' # bind '"\C-r": "\C-aprintf \033c\e]20;;100x100+1000+1000\a \C-j"' #commacd source "$SHELLRC/etc/shell/bash/commacd" # alias grep="/usr/bin/grep $GREP_OPTIONS" unset GREP_OPTIONS #Исправление ошибок с набором акцентов # if [ "$TERM" == "xterm" ]; then printf '\33]701;%s\007' "$LANG" # fi # }}} ##########################################################################