Есть у меня такой pre-push
хук — автоматом прогоняет тесты локально, через maven
. Подключается по необходимости через отдельные git конфиги для проектов.
Архив метки: bash
Автозапуск tmux и автоподключение к нему
Сделал себе автоподключение к сессии tmux (или автозапуск tmux-сервера с новой сессией, если её ещё нет) при заходе в локальную консоль или при подключении по ssh к удалённым машинам (пользоваться бесплатным шеллом bshellz стало удобней).
# Autostart tmux on login
__autostart_tmux() {
# $( type -p ) - built-in in sh or bash only?
#TMUX_BIN="$( whereis tmux | cut -d " " -f 2 )"
# which versions different output format
TMUX_BIN="$( which tmux 2> /dev/null )"
if [ -z "${TMUX_BIN}" ]; then
echo "Tmux not found"
return 0
fi
TMUX_AS_SESS_NAME="$(echo "${USER}" | cut -c '1-3')"
# return empty line if specified session exist or return 1
TMUX_AS_SESS_RUN="$( tmux has-session -t "${TMUX_AS_SESS_NAME}" &> /dev/null || echo "$?" )"
#TMUX_AS_DAEMON_MODE="$1" # $1 == "-d" or " "
#TMUX_AS_EXIT="$2" # "return 0" or "exit 0"
# do not attach automatically to tmux session if login on local XTerm
if [ -z "${TMUX_AS_SESS_RUN}" ] && [ -z "${SSH_TTY}" ] && [ "${TERM}" = "xterm" ]; then
echo "Tmux: running, not attached on local XTerm"
return 0
# do not run tmux automatically in another tmux (or screen)
# in exists tmux session shell be started on non-login mode and .profile not used
# (see set -g default-command "${SHELL}" in tmux.conf)
elif [ -n "${TMUX}" ] || [ "${TERM}" = "screen" -o "${TERM}" = "screen-256color" ]; then
echo 'Tmux: not be running in another terminal multiplexer "'${TERM}'"'
return 0
# attach to existed tmux session or create it and exit login-shell; or print error message
else
((tmux has-session -t "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}") || (tmux new-session -d -s "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}")) && exit 0;
echo "Tmux: autostart failed: $?"
fi
}
Читать далее Автозапуск tmux и автоподключение к нему BASH [born again shell] — оболочка командной строки
Краткая история Bash
bash представляет собой модернизированную и усовершенствованную версию оболочки командной строки Bourne shell. В системах семейства *NIX bash на данный момент является одной из наиболее популярных и распространённых оболочек, на многих таких ОС (и например в эмуляторе unix-подобного окружения Cygwin) эта оболочка предустановлена.
Корнями bash уходит к оболочке sh за авторством Стивена Борна, разработанной им в 1978 г. и усовершенствованной в 1987 году Брайаном Фоксом. Дословно Bash можно расшифровать как Biurne-again-shell или «Ещё одна оболочка Борна». Также фамилия Борн созвучна со словом born (родившийся), что порождает альтернативное название: «вновь рождённая оболочка».
Порядок запуска Bash
При запуске bash, во-первых, считывает и исполняет команды из основного файла профиля /etc/profile
(при условии существования такого файла). Затем происходит чтение файлов из домашней директории пользователя: $HOME/.bash_profile
, $HOME/.bash_login
, и $HOME/.profile
и исполнение записанных в них команд. В момент завершения работы при выходе из оболочки вызываются команды из файла $HOME/.bash_logout
.
Помимо перечисленных выше файлов, bash также распознаёт команды, описанные в так называемом дот-файле (или .rc-файле) $HOME/.bashrc
(примеры — файлы .vimrc и .wgetrc) Обычно здесь содержатся пользовательские настройки внешнего вида оболочки, переопределения пользовательских команд и т.п. Пользовательские функции для bash в целях удобства восприятия полезно выносить в отдельный файл (например $HOME/.bash_function
), который затем подключать из .bashrc командой source (source $HOME/.bash_function
).
Примеры файлов настроек для bash
bashrc — основной файл настроек
Мой файл bashrc (открыть на новой странице) содержит основные настройки оболочки — алиасы, сохранение истории команд, вид приглашения командной строки, настройки вывода некоторых команд и т.п. Все пользовательские функции вынесены в отдельный файл .bash_functions, подгружаемый из .bashrc. Локальные настройки для разных машин (переменные окружения, цвета приглашения командной строки) также подгружаются из отдельных внешних файлов .bash_local.
bash_functions — функции оболочки
bash_functions (открыть на новой странице) — содержит определения пользовательских функций и подгружается по вызову из .bashrc.
bash_usage — справка по использованию bash
А небольшая справка по использованию самописных функций и некоторых, не слишком часто нужных, программ, у меня вынесена в отдельный файл bash_usage, который также подгружается из .bashrc:
.bash_usage (открыть на новой странице) — содержит справку по пользовательским функцям и подгружается по вызову из .bashrc.
Остальные настройки оболочки, подключаемые в bashrc
Больше конфигов? Легко!
Примеры моих конфигурационных файлов для других программ можно найти на странице Конфиги / dotfiles