diff --git a/aliases.d/colors b/aliases.d/colors new file mode 100644 index 0000000..e0d5739 --- /dev/null +++ b/aliases.d/colors @@ -0,0 +1,8 @@ +#!/bin/bash + +# Colors +alias ls='ls --color=auto' +alias grep='grep --color=auto' +alias fgrep='fgrep --color=auto' +alias egrep='egrep --color=auto' +alias less='less -R' diff --git a/aliases.d/fun b/aliases.d/fun new file mode 100644 index 0000000..6288002 --- /dev/null +++ b/aliases.d/fun @@ -0,0 +1,4 @@ +#!/bin/bash + +# Fun +alias matrix='tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"' diff --git a/aliases.d/generic b/aliases.d/generic new file mode 100644 index 0000000..9d8fa1d --- /dev/null +++ b/aliases.d/generic @@ -0,0 +1,8 @@ +#!/bin/bash + +# Cd +alias cdup='cd ..' + +# Ls +alias ll='ls -lh' +alias lla='ls -lha' diff --git a/aliases.d/git b/aliases.d/git new file mode 100644 index 0000000..8168fb4 --- /dev/null +++ b/aliases.d/git @@ -0,0 +1,17 @@ +#!/bin/bash + +# Git +if [ -x /usr/bin/git ] +then + alias gs='git status' + alias ga='git add' + alias gc='git commit' + alias gca='git commit -a' + alias gp='git push' + alias gu='git pull' + alias gd='git diff' + alias gb='git branch' + alias gco='git checkout' + alias gw='git whatchanged' + alias gl='git log --graph' +fi diff --git a/aliases.d/power b/aliases.d/power new file mode 100644 index 0000000..2bb0f61 --- /dev/null +++ b/aliases.d/power @@ -0,0 +1,6 @@ +#!/bin/bash + +# Power +alias reboot='sudo reboot' +alias halt='sudo halt' +alias shutdown='sudo shutdown' diff --git a/aliases.d/security b/aliases.d/security new file mode 100644 index 0000000..0ca8e2d --- /dev/null +++ b/aliases.d/security @@ -0,0 +1,6 @@ +#!/bin/bash + +# Security +alias rm='rm -i' +alias mv='mv -i' +alias cp='cp -i' diff --git a/aliases.d/ssh b/aliases.d/ssh new file mode 100644 index 0000000..5b3ec47 --- /dev/null +++ b/aliases.d/ssh @@ -0,0 +1,4 @@ +#!/bin/bash + +# SSH +alias ssh!='ssh -q -oStrictHostKeyChecking=no -oIdentitiesOnly=yes' diff --git a/aliases.d/system b/aliases.d/system new file mode 100644 index 0000000..a9ff1c2 --- /dev/null +++ b/aliases.d/system @@ -0,0 +1,5 @@ +#!/bin/bash + +# System tools +if [ -f /sbin/ifconfig ] && [ -x /sbin/ifconfig ]; then alias ifconfig='/sbin/ifconfig'; fi +if [ -f /sbin/ip ] && [ -x /sbin/ip ]; then alias ip='/sbin/ip'; fi diff --git a/aliases.d/vim b/aliases.d/vim new file mode 100644 index 0000000..6d2b09c --- /dev/null +++ b/aliases.d/vim @@ -0,0 +1,9 @@ +#!/bin/bash + +# Vim Editor +if [ -x /usr/bin/vim ] +then + alias vi='vim -p' + alias view='vim -R' + alias vless='vim -u /usr/share/vim/vim73/macros/less.vim' +fi diff --git a/bash_logout b/bash_logout new file mode 100644 index 0000000..efc1d1e --- /dev/null +++ b/bash_logout @@ -0,0 +1,2 @@ +# Clear the screen for security's sake. +clear diff --git a/bash_profile b/bash_profile new file mode 100644 index 0000000..2fa389c --- /dev/null +++ b/bash_profile @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ -f $HOME/.bash/profile ]; then source $HOME/.bash/profile; fi +if [ -d $HOME/.bash/profile ]; then for file in $(ls $HOME/.bash/profile/*); do source $file; done; fi +if [ -d $HOME/.bash/profile.d ]; then for file in $(ls $HOME/.bash/profile.d/*); do source $file; done; fi + +# This file is sourced by bash for login shells. The following line +# runs your .bashrc and is recommended by the bash info pages. +[[ -f ~/.bashrc ]] && . ~/.bashrc + +if [ -d $HOME/.gem/ruby/1.9.1/bin ] ; then export PATH=$PATH:$HOME/.gem/ruby/1.9.1/bin ; fi + +[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* +PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting diff --git a/bashrc b/bashrc new file mode 100644 index 0000000..d76565f --- /dev/null +++ b/bashrc @@ -0,0 +1,65 @@ +# This file is sourced by all *interactive* bash shells on startup, +# including some apparently interactive shells such as scp and rcp +# that can't tolerate any output. So make sure this doesn't display +# anything or bad things will happen ! + +# Test for an interactive shell. There is no need to set anything +# past this point for scp and rcp, and it's important to refrain from +# outputting anything in those cases. +if [[ $- != *i* ]] ; then + # Shell is non-interactive. Be done now! + return +fi + +# Source custom libs +if [ -d $HOME/.bash/libs ]; then for lib in $(ls $HOME/.bash/libs/*.bash); do source $lib; done; fi + +# Source alias definitions +if [ -f $HOME/.bash_aliases ]; then source $HOME/.bash_aliases; fi +if [ -f $HOME/.bash/aliases ]; then source $HOME/.bash/aliases; fi +if [ -d $HOME/.bash/aliases ]; then for file in $(ls $HOME/.bash/aliases/*); do source $file; done; fi +if [ -d $HOME/.bash/aliases.d ]; then for file in $(ls $HOME/.bash/aliases.d/*); do source $file; done; fi + +# Source bash completion definitions +[[ -f /etc/bash-completion ]] && source /etc/bash-completion +[[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion +if [ -f $HOME/.bash_completion ]; then source $HOME/.bash_completion; fi +if [ -f $HOME/.bash/completion ]; then source $HOME/.bash/completion; fi +if [ -d $HOME/.bash/completion ]; then for file in $(ls $HOME/.bash/completion/*); do source $file; done; fi +if [ -d $HOME/.bash/completion.d ]; then for file in $(ls $HOME/.bash/completion.d/*); do source $file; done; fi + +# Customize the prompt +if [ "$UID" -eq 0 ]; then + export PS1='\[\e[01;31m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] ' +else + export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] ' +fi + +smiley() { + ret_val=$? + if [ "$ret_val" = "0" ] + then + echo -e "\e[01;32m:)\e[0m" + else + echo -e "\e[01;31m:(\e[0m" + fi +} + +#export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '"\$(smiley) " + +# Enable colors for ls, etc. Prefer ~/.dir_colors #64489 +if [[ -f ~/.dir_colors ]]; then + eval `dircolors -b ~/.dir_colors` +elif [[ -f /etc/DIR_COLORS ]]; then + eval `dircolors -b /etc/DIR_COLORS` +fi + +# Change the window title of X terminals +case $TERM in + xterm*|rxvt*|urxvt*|Eterm) + PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"' + ;; + screen*) + PROMPT_COMMAND='echo -ne "\033k${USER}@${HOSTNAME%%.*}\033\\"' + ;; +esac diff --git a/completion.d/ssh b/completion.d/ssh new file mode 100644 index 0000000..790bb6e --- /dev/null +++ b/completion.d/ssh @@ -0,0 +1,10 @@ +#!/bin/bash + +#SSH +if [ -e ~/.ssh/config ]; then + complete -W "$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i")" ssh +fi + +if [ -e ~/.ssh/known_hosts ]; then + complete -W "$(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\[")" ssh +fi diff --git a/create-links.bash b/create-links.bash new file mode 100755 index 0000000..9340870 --- /dev/null +++ b/create-links.bash @@ -0,0 +1,9 @@ +#!/bin/bash + +cd $HOME || exit 1 + +CONFDIR=.bash + +ln -sf $CONFDIR/bash_profile .bash_profile +ln -sf $CONFDIR/bashrc .bashrc +ln -sf $CONFDIR/bash_logout .bash_logout diff --git a/libs/basedir.bash b/libs/basedir.bash new file mode 100755 index 0000000..d3acf8b --- /dev/null +++ b/libs/basedir.bash @@ -0,0 +1,5 @@ +#!/bin/bash + +function basedir() { + echo $( cd $(dirname $0) && pwd ) +} diff --git a/libs/cgroups.bash b/libs/cgroups.bash new file mode 100755 index 0000000..5299904 --- /dev/null +++ b/libs/cgroups.bash @@ -0,0 +1,16 @@ +#!/bin/bash + +# Use cgroups +if [ "$PS1" ] ; then + if [ -d /sys/fs/cgroup ] ; then + cdir=/sys/fs/cgroup + elif [ -d /dev/cgroup ]; then + cdir=/dev/cgroup + fi + if [ -z "$cdir" ]; then + mkdir -p -m 0700 $cdir/user/$$ > /dev/null 2>&1 + /bin/echo $$ > $cdir/user/$$/tasks + /bin/echo '1' > $cdir/user/$$/notify_on_release + unset -v cdir + fi +fi diff --git a/libs/colors.bash b/libs/colors.bash new file mode 100755 index 0000000..a1fd301 --- /dev/null +++ b/libs/colors.bash @@ -0,0 +1,94 @@ +#!/bin/bash + +#ANSI CODES +#Code Effect +#0 All attributes off +#1 Bold +#2 Faint +#3 Italic +#4 Underline +#5 Blink +#6 Rapid blink +#7 Reverse video +#8 Concealed +#30 Black foreground +#31 Red foreground +#32 Green foreground +#33 Yellow foreground +#34 Blue foreground +#35 Magenta foreground +#36 Cyan foreground +#37 White foreground +#40 Black background +#41 Red background +#42 Green background +#43 Yellow background +#44 Blue background +#45 Magenta background +#46 Cyan background +#47 White background +#48 Subscript +#49 Superscript + +#T_ROWS=`tput lines` # Define current terminal dimension +#T_COLS=`tput cols` #+ in rows and columns. +#_UNDERLINE_ON=`tput smul` # turn on underline +#_UNDERLINE_OFF=`tput rmul` # turn off underline +#tput setf 4 # tput setf {fg color number} +#tput setb 2 # tput setb {bg color number} + +#tput bold - Bold effect +#tput tsmi - Italic +#tput rev - Display inverse colors +#tput sgr0 - Reset everything + +default='\E[39;49;00m' +bold='\E[1m' +italic='\E[3m' +underline='\E[4m' +blink='\E[5m' + +blackonwhite='\E[30;47m' + +#reset=`escape 0m` +#black='\E[30;47m' +#red='\E[31;47m' +#green='\E[32;47m' +#yellow='\E[33;47m' +#blue='\E[34;47m' +#magenta='\E[35;47m' +#cyan='\E[36;47m' +#white='\E[37;47m' +#bold_on=`escape 1m` +#bold_off=`escape 22m` +#blink_on=`escape 5m` +#blink_off=`escape 25m` + + +function echo_reverse +{ + echo -ne $blackonwhite + echo -ne "$*" + echo -e $default +} + +function echo_italic +{ + echo -ne $italic + echo -ne "$*" + echo -e $default +} + +function echo_bold +{ + echo -ne $bold + echo -ne "$*" + echo -e $default +} + +function echo_underline +{ + echo -ne $underline + echo -ne "$*" + echo -e $default +} diff --git a/libs/grepp.bash b/libs/grepp.bash new file mode 100755 index 0000000..6e773e7 --- /dev/null +++ b/libs/grepp.bash @@ -0,0 +1 @@ +grepp() { x=$1; shift; perl -00ne ' print if /'"$x"'/i ' "$*" ; } diff --git a/libs/ipplan.bash b/libs/ipplan.bash new file mode 100755 index 0000000..31682a7 --- /dev/null +++ b/libs/ipplan.bash @@ -0,0 +1,31 @@ +#!/bin/bash + +function ipplan_search_by_ip() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where ipaddr = inet_aton('$1');" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} + +function ipplan_search_by_location() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where location like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} + +function ipplan_search_by_name() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where hname like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} + +function ipplan_search_by_desc() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where descrip like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} + +function ipplan_search_by_user() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where userinf like '%$1%';" | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} + +function ipplan_list_ingesys() +{ + echo "select inet_ntoa(ipaddr) as ip, location, hname, descrip, userinf from ipaddr where userinf like '%ing%sys%'; " | ssh virt-cha-nettools mysql --database ipplan --default-character-set=latin1 --table +} diff --git a/libs/password.bash b/libs/password.bash new file mode 100755 index 0000000..c3fe782 --- /dev/null +++ b/libs/password.bash @@ -0,0 +1,17 @@ +#!/bin/bash + +encpasswd() { + local password_clear=$1 + local password_md5hash=$(openssl passwd -1 $password_clear) + echo "Password : $password_clear" + echo "MD5HASH : $password_md5hash" +} + +genpasswd() { + local l=$1 + [ "$l" == "" ] && l=12 + local password_clear=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs) + local password_md5hash=$(openssl passwd -1 $password_clear) + echo "Password : $password_clear" + echo "MD5HASH : $password_md5hash" +} diff --git a/libs/screen.bash b/libs/screen.bash new file mode 100755 index 0000000..3b60f98 --- /dev/null +++ b/libs/screen.bash @@ -0,0 +1,26 @@ +#!/bin/bash + +# GNU Screen stuff +if ( which screen &> /dev/null ) +then + if [[ $TERM != screen* ]] + then + if [ "$(screen -ls | sed -ne 's/[[:space:]]//' -ne 's/(Attached)// p')" ] + then + echo '' + echo_reverse 'Il existe des sessions screen attachées sur cette machine pour cet utilisateur !' + echo '' + screen -ls | grep "Attached" | sed -e 's/^/ /' + echo '' + fi + if [ "$(screen -ls | sed -ne 's/[[:space:]]//' -ne 's/(Detached)// p')" ] + then + echo '' + echo_reverse "Il existe des sessions screen détachées sur cette machine pour cet utilisateur !" + echo '' + screen -ls | grep "Detached" | sed -e 's/^/ /' + echo '' + fi + fi +fi + diff --git a/libs/term.bash b/libs/term.bash new file mode 100755 index 0000000..7544822 --- /dev/null +++ b/libs/term.bash @@ -0,0 +1,17 @@ +#!/bin/bash + +function term_change_title +{ + case $TERM in + # Change the window title of X terminals + xterm*|rxvt*|urxvt*|Eterm) + PROMPT_COMMAND='echo -ne "\033]0;${1}\007"' + ;; + + # Change the window title of screen terminals + screen*) + PROMPT_COMMAND='echo -ne "\033k${1}\033\\"' + ;; + esac + +} diff --git a/libs/urxvt.bash b/libs/urxvt.bash new file mode 100755 index 0000000..b0e4042 --- /dev/null +++ b/libs/urxvt.bash @@ -0,0 +1,11 @@ +#!/bin/bash +function urxvt_set_font +{ + printf '\33]50;%s\007' "xft:$1" +} + +function urxvt_set_title +{ + # set window title + printf '\33]2;%s\007' "$1" +} diff --git a/libs/virtualization.bash b/libs/virtualization.bash new file mode 100755 index 0000000..ee1e963 --- /dev/null +++ b/libs/virtualization.bash @@ -0,0 +1,152 @@ +#!/bin/bash + +hypervisor_connect() { + + if [ -e "${1}" ]; then echo "Usage : $0 hypervisor_name_or_ip"; return 1; fi + hypervisor=${1} + + echo + echo "Trying to start interactive virsh session on ${hypervisor}" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system + +} + +hypervisor_command() { + + if [ -e "${1}" ]; then echo "Usage : $0 hypervisor_name_or_ip"; return 1; fi + hypervisor=${1} + shift + + echo + echo "Trying to exec virsh command ($*) on ${hypervisor}" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system "$*" + +} + +vm_create() { + + if [ $# -ne 5 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_ram_size vm_disk_size vm_mac"; return 1; fi + hypervisor=${1} + name=${2} + ramsize=${3} + disksize=${4} + mac=${5} + #mac=$( grep ${name} ~/repositories/fai/config-dhcp/dhcpd-hosts.conf | sed -e 's/^.*hardware.*ethernet\s*\([0-9a-zA-Z:]*\);.*$/\1/' ) + + echo "Creating VM with virt-install" + virt-install --connect=qemu+ssh://${USER}@${hypervisor}/system \ + --name=${name} \ + --description="${name}" \ + --cpu=host \ + --ram=${ramsize} \ + --disk=/dev/lvm_guests_system/${name},size=${disksize},bus=virtio,cache=writethrough,io=native \ + --network=bridge=br192,mac=${mac},model=virtio \ + --os-type=linux \ + --os-variant=debiansqueeze \ + --boot=network,hd,menu=on \ + --pxe \ + --graphics=vnc \ + --noautoconsole + + echo "Done" + +} + +vm_start() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi + hypervisor=${1} + name=${2} + + echo + echo "Trying to start ${name} on ${hypervisor} with virsh" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system start ${name} + +} + +vm_stop() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi + hypervisor=${1} + name=${2} + + echo + echo "Trying to stop ${name} on ${hypervisor} with virsh" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system shutdown ${name} + +} + +vm_destroy() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi + hypervisor=${1} + name=${2} + + echo + echo "Trying to destroy ${name} on ${hypervisor} with virsh" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system destroy ${name} + +} + +vm_connect() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi + hypervisor=${1} + name=${2} + + echo + echo "Trying to connect to ${name} on ${hypervisor} with virsh" + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system ttyconsole ${name} + virsh --connect=qemu+ssh://${USER}@${hypervisor}/system console ${name} + +} + +#### A tester +vm_change_bridge() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_mac vm_new_bridge"; return 1; fi + hypervisor=${1} + name=${2} + mac=${3} + bridge=${4} + + #domiflist ${name} + #detach-interface --config --domain ${name} --type bridge --mac ${mac} + #attach-interface --config --domain ${name} --type bridge --mac ${mac} --source ${bridge} + +} + +#### A tester +vm_add_data_disk() { + + if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name size"; return 1; fi + hypervisor=${1} + name=${2} + size=${3} + + #pool-list + #vol-create-as --pool guests_data --name virt-cha-mirror --capacity 200G --format raw + #attach-disk virt-cha-mirror /dev/lvm_guests_data/virt-cha-mirror vdb --cache writethrough + #domblklist virt-cha-mirror + +} + +#### bash completion + +_hypervisors() { + if [ -e ~/.ssh/config ]; then + configured_hypervisors=$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i" | grep -i hypervisor) + fi + if [ -e ~/.ssh/known_hosts ]; then + known_hypervisors=$(cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | grep -v "\[" | grep -i hypervisor | uniq) + fi + echo $configured_hypervisors $known_hypervisors +} + +#complete -W "$(cat ~/.ssh/config | egrep -i "^\s*host\s+[a-zA-Z]" | sed -e "s/^host\s*//i" | grep -i hypervisor)" hypervisor_connect +complete -W "$(_hypervisors)" hypervisor_connect +complete -W "$(_hypervisors)" hypervisor_command +complete -W "$(_hypervisors)" vm_create +complete -W "$(_hypervisors)" vm_start +complete -W "$(_hypervisors)" vm_stop +complete -W "$(_hypervisors)" vm_connect diff --git a/profile.d/apps b/profile.d/apps new file mode 100644 index 0000000..564ea84 --- /dev/null +++ b/profile.d/apps @@ -0,0 +1,8 @@ +#!/bin/bash + +# Defined prefered applications +export TERMINAL=urxvtc +export PAGER=less +export EDITOR=vim +export BROWSER=firefox + diff --git a/profile.d/history b/profile.d/history new file mode 100644 index 0000000..6d7d972 --- /dev/null +++ b/profile.d/history @@ -0,0 +1,8 @@ +#!/bin/bash + +# Customize history format +export HISTSIZE=5000 +export HISTFILESIZE=20000 +export HISTTIMEFORMAT="[%d/%m/%Y %H:%M:%S] " +export HISTCONTROL="ignoreboth" +export HISTIGNORE="[bf]g:exit:history*:*rm*-rf*:*rm*-f*:reboot:ls:ll:man:mutt" diff --git a/profile.d/lang b/profile.d/lang new file mode 100644 index 0000000..3b455dc --- /dev/null +++ b/profile.d/lang @@ -0,0 +1,4 @@ +#!/bin/bash + +# Define prefered LANG +export LANG=fr_FR.utf8 diff --git a/profile.d/mail b/profile.d/mail new file mode 100644 index 0000000..3692de2 --- /dev/null +++ b/profile.d/mail @@ -0,0 +1,4 @@ +#!/bin/bash + +# Mail +export MAILPATH=~/Mails/ diff --git a/profile.d/path b/profile.d/path new file mode 100644 index 0000000..43fe3e8 --- /dev/null +++ b/profile.d/path @@ -0,0 +1,5 @@ +#!/bin/bash + +# Customize PATH +if [ -d $HOME/bin ] ; then export PATH=$PATH:$HOME/bin ; fi +if [ -d $HOME/scripts ] ; then export PATH=$PATH:$HOME/scripts ; fi diff --git a/profile.d/tsocks b/profile.d/tsocks new file mode 100644 index 0000000..49d3f2b --- /dev/null +++ b/profile.d/tsocks @@ -0,0 +1,4 @@ +#!/bin/bash + +# Proxy +export TSOCKS_CONF_FILE=~/.config/tsocks/tsocks.conf