131 lines
4.3 KiB
Bash
131 lines
4.3 KiB
Bash
#!/bin/sh
|
|
################################################################################
|
|
## .profile
|
|
## 2013-06-03
|
|
################################################################################
|
|
## This file is sourced by .xprofile and shell rc files to make sure it work in
|
|
## TTY as well as under X.
|
|
|
|
## Mask
|
|
## Result for 027 is: rwxr-x---
|
|
umask 027
|
|
|
|
## Note that it is important for MANPATH to have an empty entry to keep
|
|
## searching in the default db path. Same for INFOPATH, which should have an
|
|
## empty entry at the end, otherwise Emacs will not use standard locations. For
|
|
## security (and bad programming assumptions) you should always append entries
|
|
## to PATH, not prepend them.
|
|
appendpath()
|
|
{
|
|
[ $# -eq 2 ] && PATHVAR=$2 || PATHVAR=PATH
|
|
if [ -z "$(eval echo \$$PATHVAR | grep "\(:\|^\)$1\(:\|$\)")" ]; then
|
|
eval export $PATHVAR="\$$PATHVAR:$1"
|
|
fi
|
|
}
|
|
prependpath()
|
|
{
|
|
[ $# -eq 2 ] && PATHVAR=$2 || PATHVAR=PATH
|
|
if [ -z "$(eval echo \$$PATHVAR | grep "\(:\|^\)$1\(:\|$\)")" ]; then
|
|
eval export $PATHVAR="$1:\$$PATHVAR"
|
|
fi
|
|
}
|
|
|
|
appendpath "${HOME}/.launchers/"
|
|
appendpath "${HOME}/.scripts/"
|
|
|
|
## TeXlive
|
|
TEXDIR="${TEXDIR:-/usr/local/texlive}"
|
|
if [ -d "${TEXDIR}" ]; then
|
|
TEXYEAR=$(/bin/ls -1r "${TEXDIR}" | grep -m1 "[0-9]\{4\}")
|
|
TEXDISTRO=$(uname -m)-$(uname | tr "[[:upper:]]" "[[:lower:]]")
|
|
TEXFOLDER="${TEXDIR}/${TEXYEAR}/bin/${TEXDISTRO}/"
|
|
if [ -d "${TEXFOLDER}" ]; then
|
|
appendpath $TEXFOLDER
|
|
prependpath ${TEXDIR}/${TEXYEAR}/texmf/doc/info INFOPATH
|
|
|
|
## BSD uses 'manpath' utility, so MANPATH variable may be empty.
|
|
if [ "$OSTYPE" = "linux-gnu" ]; then
|
|
prependpath ${TEXDIR}/${TEXYEAR}/texmf/doc/man MANPATH
|
|
fi
|
|
fi
|
|
unset TEXYEAR
|
|
unset TEXDISTRO
|
|
unset TEXFOLDER
|
|
fi
|
|
unset TEXDIR
|
|
|
|
## Make 'less' more friendly for non-text input files, see lesspipe(1).
|
|
[ -n "$(command -v lesspipe)" ] && eval "$(lesspipe)"
|
|
|
|
## Manpage.
|
|
export MANPAGER="less -s"
|
|
export MANWIDTH=80
|
|
## The following options are useful for FreeBSD default 'less' command which has
|
|
## an empty prompt. Sadly this gets messy with 'apropos'.
|
|
# export MANPAGER="less -sP '?f%f .?m(file %i of %m) .?ltlines %lt-%lb?L/%L. .byte %bB?s/%s. ?e(END) :?pB%pB\%..%t'"
|
|
|
|
## Less config. -R is needed for lesspipe.
|
|
export LESS=' -R '
|
|
|
|
## Time display (with ls command for example)
|
|
## TODO: BSD version?
|
|
export TIME_STYLE=+"|%Y-%m-%d %H:%M:%S|"
|
|
|
|
## System locale
|
|
# export LC_MESSAGES=fr_FR.utf8
|
|
|
|
## Default text editor
|
|
EDITOR="nano"
|
|
[ -n "$(command -v vim)" ] && EDITOR="vim"
|
|
[ -n "$(command -v emacs)" ] && EDITOR="emacs"
|
|
GIT_EDITOR="$EDITOR"
|
|
|
|
## 'em' is a script for emacsclient. See 'homeinit'.
|
|
if [ -n "$(command -v em)" ]; then
|
|
EDITOR='em'
|
|
GIT_EDITOR='emc'
|
|
fi
|
|
export EDITOR
|
|
export GIT_EDITOR
|
|
|
|
## Internet Browser
|
|
[ -n "$(command -v luakit)" ] && export BROWSER="luakit"
|
|
[ -n "$(command -v dwb)" ] && export BROWSER="dwb"
|
|
|
|
## SSH-Agent
|
|
## WARNING: this is somewhat insecure. Avoid using it on a mutli-user machine.
|
|
if [ -n "$(command -v ssh-agent)" ]; then
|
|
SSH_ENV_FILE="/tmp/ssh-agent-env"
|
|
if [ $(ps ax -o command="" | grep -c "ssh-agent") -eq 1 ]; then
|
|
SSH_AGENT_VARS=$(ssh-agent)
|
|
eval $(echo "${SSH_AGENT_VARS}")
|
|
echo "${SSH_AGENT_VARS}" | sed '2q' | cut -d'=' -f2 | cut -d';' -f1 > "$SSH_ENV_FILE"
|
|
chmod 444 "$SSH_ENV_FILE"
|
|
unset $SSH_AGENT_VARS
|
|
elif [ -f "$SSH_ENV_FILE" ]; then
|
|
SSH_AUTH_SOCK=$(sed -n '1{p;q}' "$SSH_ENV_FILE") ; export SSH_AUTH_SOCK
|
|
SSH_AGENT_PID=$(sed -n '2{p;q}' "$SSH_ENV_FILE") 2>/dev/null ; export SSH_AGENT_PID
|
|
fi
|
|
unset SSH_ENV_FILE
|
|
fi
|
|
|
|
## Set TEMP dir if you want to override /tmp for somce application that check for this variable. Usually not a good idea.
|
|
# [ -d "$HOME/temp" ] && export TEMP="$HOME/temp"
|
|
|
|
## Wine DLL override. This removes the annoying messages for Mono and Gecko.
|
|
export WINEDLLOVERRIDES="mscoree,mshtml="
|
|
|
|
## Hook. Should be sourced last
|
|
[ -f ~/.profile_hook ] && . ~/.profile_hook
|
|
## Hook example
|
|
|
|
# appendpath "${HOME}/local/usr/bin"
|
|
# prependpath "${HOME}/local/usr/share/info" INFOPATH
|
|
# prependpath "${HOME}/local/usr/share/man" MANPATH
|
|
# export LD_LIBRARY_PATH="${HOME}/local/usr/lib/"
|
|
# export PKG_CONFIG_PATH="${HOME}/local/usr/lib/pkgconfig"
|
|
# export CPPFLAGS=-I$HOME/local/usr/include
|
|
# export LDFLAGS=-L$HOME/local/usr/lib
|
|
#
|
|
# umask 077
|