Standard-configuration for bash with tmux and vim-plugins as submodules. Checks on each read of .bashrc for updates in this config. Intervall for checking is configurable.
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.
 
 
 
Jakobus Schürz 86a9254b25 change debug to logging 3 days ago
.githooks transition from HOSTCONFIG to MYSHELLCONFIG 2 years ago
bash_completion.d add deplypvp 9 months ago
bin change debug to logging 3 days ago
tmux update submodules 2 months ago
vim update submodules 1 week ago
.gitconfig add mergestrategie 5 days ago
.gitignore remove unneeded to ignore files 8 months ago
.gitignore_global add global ignore-file to ignore helptags from vim 12 months ago
.gitmodules install submodules 2 months ago
.gitmodules.github.com add files for github and own repos for submodules 12 months ago
.gitmodules.schuerz.at change paths 12 months ago
LICENSE Create LICENSE 2 years ago
PS1 remove old code 6 days ago
README.md change variable from MYHSHELLCONFIG_ to MSC_ and fix 10 months ago
aliases revert alias vi to vim 2 weeks ago
bashrc_add fix git checkout options 1 week ago
defaults.conf add SSH_CERT_WARN_SEC to defaults 3 months ago
defaults.conf.sample add SSH_CERT_WARN_SEC to defaults 3 months ago
functions.sh remove comments and fix typo 6 days ago
logging rename script, improve loggin 1 year ago
myshell_git_sync remove Debug 2 weeks ago
myshell_load_defaults change debug 7 months ago
myshell_load_fortmpconfig add history-environments for tmp-config 1 year ago
myshell_load_x2go_tokenforward revert linking to cat>write 1 year ago
sshs_addfiles.conf add configfile 9 months ago
vimplugins install submodules 2 months ago
vimrc add rule for bind-db 1 month ago

README.md

myshellconfig

Am Einfachsten ist es, das github-Repo zu forken und in .gitconfig den Namen und die Emailadresse an die eigenen Werte anzupassen. Das Repo ist öffentlich, also keine Passwörter speichern!!!

ACHTUNG

Diese automatische Konfiguration überschreibt bei jedem Login in ${HOME} einige Dateien mit Symlinks in das lokale Repo. Die zuvor vorhandenen Dateien werden nicht gesichert und gehen daher verloren. Folgende Dateien werden durch Symlinks ersetzt. Diese bitte VOR dem ersten Aufruf sichern.

~/.gitconfig -> ${HOME}/.local/myshellconfig/.gitconfig
~/.tmux -> ${HOME}/.local/myshellconfig/tmux
~/.tmux.conf -> ${HOME}/.local/myshellconfig/tmux/tmux.conf
~/.vim -> ${HOME}/.local/myshellconfig/vim
~/.vimrc -> ${HOME}/.local/myshellconfig/vimrc

Bitte beachten, dass damit eine schon vorhandene eigene Datei überschrieben wird!

Proxy

Wenn in einem Setup ein Proxy verwendet werden muss, so ist dieser VORHER zu konfigurieren. Da Proxyeinstellungen Hostabhängig sind und nicht generell in die allgemeine Konfiguration aufgenommen werden können, sind die Proxy-Einstellungen für git im File

~/.gitconfig_local
[http]
        proxy = http://username:password@proxy.domain.tld:1233/

abzulegen. Die verteilte .gitconfig enthält bereits eine Zeile, welche dieses lokale File für git sourced.

Installation

Damit auf einem neuen Server meine persönlichen Alias und Bash-Promt, wie auch verschiedene andere Befehle (vim in sudo mit der vimrc des Benutzers) zur Verfügung stehen, muss als erstes nach dem ersten Login folgendes ausgeführt werden:

Clone von github

git clone https://github.com/xundeenergie/myshellconfig.git ${HOME}/.local/myshellconfig

~/.bashrc ist am Ende um folgende Zeilen zu ergänzen

#MYSHELLCONFIG-start
if [ -e ~/.local/myshellconfig/bashrc_add ]; then . ~/.local/myshellconfig/bashrc_add; fi
#MYSHELLCONFIG-end

Ausloggen und neu Einloggen.

Lokale Configuration

in ~/.bashrc werden vor der Zeile zum Einbinden der myshellconfig die Variablen eingefügt um damit ein hostspezifisches Verhalten zu steuern

MSC_GIT_CHECKOUTSCRIPT_OPTIONS=

Mögliche Optionen:

* -h
* -s
* ''

Verwendung: Damit kann man angeben, ob ein headless Repo erzeugt wird. Ohne -h folgt das Repo origin/master Default ist die Option "-h". Soll ein normales Repo (nicht headless) verwendet werden, so MUSS die Variable so gesetzt werden

Mit der Option -s kann ein Update der Submodules (tmux-, vim-plugins) erzwungen werden

MSC_GIT_CHECKOUTSCRIPT_OPTIONS=""

Git Protokolle für push und pull

MSC_GIT_REMOTE_PROTOCOL=git # git ist default
MSC_GIT_REMOTE_PUSH_PROTOCOL=$MSC_GIT_REMOTE_PROTOCOL # MSC_GIT_REMOTE_PROTOCOL ist default

Mögliche Optionen:

* git - (default) Gitprotokoll ist git (Auf manchen Umgebungen kann der dazu notwenidge Port gesperrt sein)
* http - wenn git nicht möglich ist, kann das http/https Protokoll verwendet werden. (ist langsamer als git, jedoch ist fast überall Port 80 oder 440 freigeschaltet)
* ssh - Wenn auch schreibend auf das Repo zugegriffen werden soll, so muss Privatekey, Pubkey (und wenn konfiguriert Certifikate mit den notwendigen Principals) vorhanden sein, dann kann das ssh-Prodokoll verwendet werden.
* file - Das entfernte Repository ist auf einem USB-Stick, welcher unter /media/$USER/gitstick beim Einstecken gemountet wird. Der Pfad ist anpassbar (siehe MSC_GIT_REPO_PATH)

Vim Plugins werden prinzipiell von github.com bezogen. Für spezielle Anwendungsfälle (github.com ist per firewall gesperrt), kann man diese auch in eigenen Repos hosten. Um diese eigenen Repos zu verwenden, muss in ~/.bashrc die Variable entsprechend gesetzt werden. Es ist ein Verzeichnis anzugeben, unter dem alle Pluginrepos als bare-Repos gecloned werden. Wichtig ist, dass die Usernamenverzeichnisse von github.com hier auch vorhanden sind, damit ohne dieser gesetzten Variable die Plugins direkt von github.com geladen werden können.

MSC_VIM_PLUGINS=https://my.git.server/public/Vim

Z.B. das Plugin Vundle.vim hat ist auf github unter dieser URL zu finden

//github.com/gmarik/Vundle.vim.git

Damit ist das eigene Repo am eigenen git-server unter dieser Adresse erreichbar zu machen wenn die Variable MYSHELLCONFIG_VIM_PLUGINS wie oben Angegeben gesetzt wird.:

https://my.git.server/public/Vim/gmarik/Vundle

Über ~/.bashrc manuell festlegbare Variablen und ihre Default-Werte, wenn nicht manuell gesetzt:

MSC_SUBPATH=.local/myshellconfig
MSC_BASE="${HOME}/${MSC_SUBPATH}"
MSC_LOGDIR="${MSC_BASE}/logs"
MSC_LOGFILE="${MSC_LOGDIR}/git.log"
MSC_GIT_TIMEOUT=5s

MSC_GIT_SERVER="git.schuerz.at"
MSC_GIT_REPO_NAME="server-config.git"
MSC_GIT_REPO_PATH_HTTP="/public/"
MSC_GIT_REPO_PATH_SSH=":public/"
MSC_GIT_REPO_PATH_GIT="/public/"

Verteilen auf neuen Host/User

Einen neuen User auf einem anderen Host mit der selben Konfiguration versehen funktioniert folgendermaßen:

sshmyshellconfig USER@HOST

und dann auf dem Host einloggen

ssh USER@HOST

es können die üblichen ssh-Optionen und Parameter verwendet werden.

Signieren der Commits mit gpg

Wenn man seine Commits signieren möchte, kann dazu in der Datei

~/.gitconfig_local

folgendes eingetragen werden:

[user]
	signingKey = 0xABC123DEF456GHI7
[gpg]
	program = gpg2

signingKey muss natürlich dem eigenen gpg-Key entsprechen, der lokal vorhanden ist und verwendet werden soll.