# plik receptury: bash_profile

# Aby ponownie odczytać plik (i uwzględnić wprowadzone w nim zmiany),
# należy wpisać polecenie:
# source $SETTINGS/bash_profile

# Zabezpieczenie przed błędami. Ewentualne komunikaty o nieodnalezieniu
# pliku powinny być łatwe do zrozumienia.
# Początkowy znak ':' zapobiega wykonaniu kodu jako programu
# (po zastąpieniu wartości zmiennej).
: ${SETTINGS:='SETTINGS_zmienna_nie_zdefiniowana'}

# Tylko na czas debugowania --powoduje błędną pracę scp, rsync
# echo "Włączanie pliku $SETTINGS/bash_profile..."
# export PS4='+xtrace $LINENO: '
# set -x

# Debugowanie/logowanie --nie zakłóca pracy scp, rsync
#case "$-" in
#    *i*) echo "$(date '+%Y-%m-%d_%H:%M:%S_%Z') Interaktywna" \
#              "$SETTINGS/bash_profile ssh=$SSH_CONNECTION" >> ~/rc.log ;;
#    *  ) echo "$(date '+%Y-%m-%d_%H:%M:%S_%Z') Nieinteraktywna" \
#              "$SETTINGS/bash_profile ssh=$SSH_CONNECTION" >> ~/rc.log ;;
#esac

# Wykorzystanie skryptu keychain (http://www.gentoo.org/proj/en/keychain/)
# zarządzającego pracą agenta ssh (ssh-agent). Jeśli nie jest zainstalowany
# należy go dodać do systemu.
for path in $SETTINGS ${PATH//:/ }; do
    if [ -x "$path/keychain" ]; then
        # Załadowanie domyślnych kluczy id_rsa i/lub id_dsa keys, a także
        # innych, jeśli jest to konieczne
        # Zobacz również opcje --clear --ignore-missing --noask --quiet --time-out
        $path/keychain ~/.ssh/id_?sa
        break
    fi
done


# Uwzględnienie parametrów podpowłok również w powłokach logowania.
# Systemowy plik /etc/profile prawdopodobnie zawiera już stosowne instrukcje.
# Jeżeli nie, korzystniejsze będzie własnoręczne dodanie ich do pliku:
# $SETTINGS/bash_profile
# Niemniej na wszelki wypadek...
#for file in /etc/bash.bashrc /etc/bashrc ~/.bashrc; do
#    [ -r "$file" ] && source $file && break  # Use the first one found
#done


# Ustawienia właściwe dla miejsca pracy lub konkretnego komputera
case $HOSTNAME in
    *.firma.pl        ) # source $SETTINGS/firma.pl
                      ;;
    komp1.*           ) # ustawienia komputera komp1
                      ;;
    komp2.firma.pl    ) # source .bashrc.komp2
                      ;;
    drake.*           ) # echo DRAKE w bash_profile.jp!
                      ;;
esac


# Poniższe instrukcje są umieszczne jako ostatnie, ponieważ od tego momentu
# praca jest rozgałęziana. Sesja screen jest konfigurowana w oddzielnym pliku.

# Wykonanie kodu tylko w przypadku, w którym sesja screen nie jest uruchomiona
# i istnieje plik '~/.use_screen'.
if [ $TERM != "screen" -a "$USING_SCREEN" != "YES" -a -f ~/.use_screen ]; then
    # Można by w tym miejscu zastosować instrukcję 'type -P', ale została ona
    # dodana do powłoki bash-2.05b, a korzystamy także ze starszych systemów.
    # Nie można zastosować instrukcji 'which', gdyż w niektórych systemach
    # zwraca ona wynik tylko wtedy, gdy plik istnieje.
    for path in ${PATH//:/ }; do
        if [ -x "$path/screen" ]; then
            # Jeśli screen(1) istnieje i jest plikiem wykonywalnym,
            # uruchamiany jest skrypt osłonowy.
            [ -x "$SETTINGS/run_screen" ] && $SETTINGS/run_screen
        fi
    done
fi
