Файлы конфигурации bash

Cent OS, Scientific Linux

Модератор: Модераторы разделов

Ответить
Аватара пользователя
netvis
Сообщения: 94

Файлы конфигурации bash

Сообщение netvis »

Здравствуйте,
Ребят, если не жалко - поделитесь, пожалуйста, своими версиями файлов настройки bash - .bash_profile и .bashrc. Кто какие удобные алиасы использует либо может какие штуки еще интересные - просто для собственного развития.
Буду признателен.
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Файлы конфигурации bash

Сообщение Vascom »

В ~/.bashrc алиасы для yum/dnf чтобы не переучиваться:
alias yupdate='sudo dnf -b upgrade --refresh'
alias yinstall='sudo dnf -b install'
alias yremove='sudo dnf remove'
alias yclean='sudo dnf clean all'
alias ysearch='sudo dnf search'
alias yinfo='sudo dnf info'
alias ylist='sudo dnf list'
alias ybdep='sudo dnf builddep'
alias yprov='sudo dnf provides'

Алиас для отключения монитора через 5 секунд:
alias xstop='sleep 5; xset dpms force off'

Алиасы для копирования и перемещения файлов (с каталогами криво работает) через rsync. Удобно заменяет scp или просто если надо видеть скорость передачи и прогресс:
alias rsynccopy="rsync --partial --progress --append-verify -r -h "
alias rsyncmove="rsync --partial --progress --append-verify -r -h --remove-source-files"

Алиас для запуска процесса с наименьшим приоритетом
alias slow='nice -n 19'

Переменная чтобы увеличить историю команд терминала:
export HISTSIZE=100000
Текстовый редактор nano по умолчанию в консоли:
export EDITOR=/usr/bin/nano

Ну и для git чтобы сразу видеть в какой ветке находишься:
~/.git-shell.sh
Содержимое .git-shell.sh:

Код: Выделить всё

source /usr/share/doc/git-core-doc/contrib/completion/git-completion.bash
alias g=git
complete -o default -o nospace -F _git g

source /usr/share/doc/git-core-doc/contrib/completion/git-prompt.sh
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

Vascom писал(а):
28.04.2016 16:06
alias ysearch='sudo dnf search'
alias yinfo='sudo dnf info'
alias ylist='sudo dnf list'
alias ybdep='sudo dnf builddep'
alias yprov='sudo dnf provides'

А зачем тут sudo?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Файлы конфигурации bash

Сообщение SLEDopit »

Имхо, держать кучу алиасов в .bashrc -- не самая лучшая практика.
У меня обычно открыто по 20-30 терминалов. И если мне нужно поменять что-нибудь в .bashrc -- это достаточно неудобно.
Поэтому я все функции и алиасы вынес в ~/scripts/ и добавил ~/scripts/ в PATH.
Теперь все изменения моментально вступают в силу во всех сессиях.

Из относительно интересных вещей:
.inputrc (осторожно я использую vi-mode в консоли, поэтому переносите аккуратно)

Код: Выделить всё

"\e[A": history-search-backward
"\e[B": history-search-forward
# for vi mode
set editing-mode vi
$if mode=vi

set keymap vi-command
# # these are for vi-command mode
"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down
"\ep": yank-last-arg                       # bind to Alt-p
Control-l: clear-screen

set keymap vi-insert
# # these are for vi-insert mode
"\e[A": history-search-backward
"\e[B": history-search-forward
"\ep": yank-last-arg
Control-l: clear-screen
$endif


.bashrc

Код: Выделить всё

set -o vi

PROMPT_COMMAND='history -a; history -n'

export LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=32:*.rpm=90'
export LANG=en_US.UTF-8
export HISTCONTROL=ignoredups
export HISTTIMEFORMAT='%F %T '
export HISTIGNORE="&:[pl]s*:[bf]g:exit:[ ]*:history*:rm *:cd *:alsamixer*:ncmpcpp*:type *:pwd*:w:who*:du *:df *:cal *:mplayer*:turn*:"
export HISTSIZE=100500

alias grep='grep --color'
alias ls='ls --color=auto'
alias pingg='ping google.ru -c1'
alias mplayer='mplayer -fs'
alias wget='wget --referer="http://www.google.com" --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"'

# as I use tmux I'like to indicate in tab name if it is a local machine or no
settitle() {
    printf "\033k$1\033\\"
}

ssh() {
    settitle "$*"
    command autossh "$@"
    settitle "bash"
}


Вообще там ещё 100500 всяких мелких настроек размазано по разным файликам, начиная от .tmux.conf и .ssh/config, заканчивая rc.lua.
Когда-нибудь я таки выложу это всё на гитхаб. В один прекрасный день. Но не сегодня. Там всё же надо чуток причесать всё..
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Файлы конфигурации bash

Сообщение Vascom »

Bizdelnick писал(а):
28.04.2016 16:39
Vascom писал(а):
28.04.2016 16:06
alias ysearch='sudo dnf search'
alias yinfo='sudo dnf info'
alias ylist='sudo dnf list'
alias ybdep='sudo dnf builddep'
alias yprov='sudo dnf provides'

А зачем тут sudo?

Чтобы повторно не выкачивалась база пакетов. Ну а для builddep так вообще обязательно.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

Я тоже не пользуюсь алиасами во избежание путаницы. А вот такое у меня, помимо прочего, в ~/.profile:

Код: Выделить всё

EDITOR=vim
export EDITOR

LIBVIRT_DEFAULT_URI=qemu:///system
export LIBVIRT_DEFAULT_URI

LESSOPEN='| /usr/share/source-highlight/src-hilite-lesspipe.sh %s'
LESS=' -R '
export LESS LESSOPEN

LIBVIRT_DEFAULT_URI, впрочем, для редхатообразных дистрибутивов вроде неактуально; по крайней мере некоторое время назад рулить libvirt всё равно можно было только от рута, для которого этот URI и так используется по умолчанию.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Файлы конфигурации bash

Сообщение SLEDopit »

Bizdelnick писал(а):
28.04.2016 19:31
EDITOR=vim
export EDITOR
А зачем ты так делаешь?
Можно же просто export EDITOR=vim указать. Или там какие-то тонкости?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

SLEDopit писал(а):
28.04.2016 22:33
Можно же просто export EDITOR=vim указать. Или там какие-то тонкости?

Тонкость в том, что это не .bashrc, а .profile, который общий для всех шеллов. Хотя такой экзотикой, которая не понимает снитаксиса export EDITOR=vim, я в качестве логин-шелла не пользуюсь, но порядок должон быть. ☺
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Файлы конфигурации bash

Сообщение yoshakar »

У меня обычные, можно сказать стандартные:

Код: Выделить всё

cp='cp -i'
df='df -h'
du='du -h'
ls='ls -h --color'
mv='mv -i'
rm='rm -i'


Из хоть сколько необычного в ~/.*rc (правда у меня не bash, а zsh, но в данном случае неважно):

Код: Выделить всё

umask 002

printf "\e[?2004l"
"Дефолтная" маска 022, на мой взгляд, противоречит всей сути UNIX.
Последняя строка — борьба с "~0", "~1" при вставке в консоль. Помогает не всегда, правда, но всё равно с ней лучше чем без неё.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

yoshakar писал(а):
29.04.2016 00:54
обычные, можно сказать стандартные:

Алиас для cp -i «стандартно» присутствует ЕМНИП только в альте и там люто бесит, ибо с ним не работает опция -f, и приходится без конца отвечать на глупые вопросы. Вообще интерактив в консоли — зло.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
netvis
Сообщения: 94

Re: Файлы конфигурации bash

Сообщение netvis »

Ребят, меня, если честно, очень интересует, какие установки вы кладете в bash_profile, а какие в bashrc и почему. Разницу я понимаю, просто интересует ваше мнение. Видел много примеров, где все пихают в bash_profile, а bashrc отсутствует.
Если отладка - это устранение ошибок, то программирование - это их создание ...
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Файлы конфигурации bash

Сообщение Vascom »

И ещё, увлекаясь алиасами, важно помнить, что в скриптах они не работают.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Файлы конфигурации bash

Сообщение SLEDopit »

Vascom писал(а):
29.04.2016 09:29
И ещё, увлекаясь алиасами, важно помнить, что в скриптах они не работают.
Чуток дополнить.
Важно помнить, что в скриптах они не работают, если явно об этом не попросить.
Например стоит сделать шебанг таким и всё заработает:

Код: Выделить всё

#/bin/bash -i

Не уверен, что оно будет работать в экзотических шеллах.

Но в любом случае, полагаться на алиасы в скриптах -- зло. Но дебажить при переезда на новую систему может быть весело (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Файлы конфигурации bash

Сообщение rl0ad »

.bash_profile
export TERM=xterm-256color
setfont /usr/share/kbd/consolefonts/ter-u22b.psfu
echo -e "\e[36mSetFont Terminus 22 bold\e[0m"

- рутовый терминал. Не помню, зачем там все это, но помню, что это нужно ;)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

rl0ad писал(а):
29.04.2016 20:23
export TERM=xterm-256color

Вот это точно не нужно. Эту переменную должен устанавливать сам эмулятор терминала.

rl0ad писал(а):
29.04.2016 20:23
setfont /usr/share/kbd/consolefonts/ter-u22b.psfu

А это лучше в глобальных настройках делать: кириллица в консоли. Дёргать setfont при каждом логине нет совершенно никакой нужды.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Файлы конфигурации bash

Сообщение rl0ad »

А это лучше в глобальных настройках делать: кириллица в консоли. Дёргать setfont при каждом логине нет совершенно никакой нужды.

На OpenSUSE/Leap все было точно так же (workaround-cyrillic-console), что вообще и не удивительно. Про способ по ссылке не знал, да и чего такого в дергании setfont - рядовая консольная команда. Мне было так проще. Впрочем, это все такие тонкости..

Вот это точно не нужно. Эту переменную должен устанавливать сам эмулятор терминала.

А он не хотел)) Тут же много чего еще.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Файлы конфигурации bash

Сообщение Bizdelnick »

rl0ad писал(а):
29.04.2016 20:42
чего такого в дергании setfont - рядовая консольная команда

setfont работает глобально. Если Вы после загрузки войдёте другим пользователем, шрифт будет по умолчанию. Если тем, у которого прописан setfont, то шрифт изменится сразу на всех VC. Криво же.

rl0ad писал(а):
29.04.2016 20:42
А он не хотел

Чушь.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Файлы конфигурации bash

Сообщение rl0ad »

Так мне и было желательно глобальное изменение шрифта, иначе в консоли текст только с увеличительным стеклом можно было прочитать. Но это да, какой-то мой косяк, не знаю, разбираться не стал. И я не спорю, просто вот так оно было, а т. к. консоль нужна раз в полгода, то setfont вполне устроил- оно тупо работает!
Спасибо сказали:
Ответить