Может кому пригодится.
На работе /home монтируется по nfs, поэтому некоторые браузеры особенно тормозят. Сильнее всего этим грешит firefox, но речь не о нём. Этот скрипт для запуска chromium с кэшем и конфигом в произвольном месте (либо на локальном диске, либо при достаточном запасе в tmpfs).
Этот скрипт допускает только одну запущенную копию браузера для пользователя. При запуске от root производит коррекцию в /opt для правильной работы. Не требует изменения ярлыков и меню. «Засасывает» уже существующие конфиг и кэш.
Устанавливаем chromium-bin, копируем скрипт в /usr/local/bin, корректируем при необходимости, пускаем его от root. После переустановки chromium требуется опять запуск от root (переименовывается один файл в /opt/... и восстанавливается ссылка).
Это не шедевр, поэтому всякие улучшения желаются и приветствуются. По идее должно работать не только в bash, но не тестировалось.
cat /usr/local/bin/chrome
#!/bin/bash
########################################################################
BIN=chrome
BINDIR=/usr/local/bin
PROGRAM=chromium
PIDFILE=/tmp/.private/${USER}/${PROGRAM}
PROGDIR=/opt/chromium.org/chrome-linux
PROGLIB=/opt/chromium.org/nss-nspr
CONFIGSRC=${HOME}/.config/${PROGRAM}.tar
CACHESRC=${HOME}/.cache/${PROGRAM}.tar
########################################################################
cleanconfig(){
rm -rf ${HOME}/.config/${PROGRAM} ${HOME}/.cache/${PROGRAM}
}
cleantemp(){
rm -rf ${CONFIGDIR} ${CACHEDIR}
}
quit(){
rm -f ${PIDFILE}
exit 0
}
unpack(){
cd ${CONFIGDIR}
tar -xf ${CONFIGSRC}
cd ${CACHEDIR}
tar -xf ${CACHESRC}
}
linkdir(){
ln -s ${CACHEDIR} ${HOME}/.cache/${PROGRAM}
ln -s ${CONFIGDIR} ${HOME}/.config/${PROGRAM}
}
packconfig(){
cd ${HOME}/.config/${PROGRAM}
tar -cf ${CONFIGSRC} .
}
packcache(){
cd ${HOME}/.cache/${PROGRAM}
tar -cf ${CACHESRC} .
}
run(){
cd ${PROGDIR}
if [ -n "${PROGLIB}:${PROGDIR}" ] ; then
if [ "${LD_LIBRARY_PATH+set}" = "set" ] ; then
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PROGLIB}:${PROGDIR}"
else
export LD_LIBRARY_PATH="${PROGLIB}:${PROGDIR}"
fi
fi
./${BIN}.bin "$@"
}
########################################################################
if [ -f ${PIDFILE} ]; then
if [ "x$(ps p $(cat ${PIDFILE}) -o ruser="" -o comm="" | grep ${BIN} | grep ${USER} | wc -l)" = "x1" ]; then
cat ${PIDFILE}
exit
fi
fi
echo $$ > ${PIDFILE}
if [ -x "${BINDIR}/${BIN}" ]; then
if [ $UID -eq 0 ]; then
if [ -L ${PROGDIR}/${BIN} ]; then
quit
fi
if [ -x ${PROGDIR}/${BIN} ]; then
mv ${PROGDIR}/${BIN} ${PROGDIR}/${BIN}.bin
ln -s ${BINDIR}/${BIN} ${PROGDIR}/${BIN}
fi
if [ -x ${PROGDIR}/${BIN}.bin ]; then
if [ -L ${PROGDIR}/${BIN} ]; then
quit
else
ln -s ${BINDIR}/${BIN} ${PROGDIR}/${BIN}
fi
fi
quit
fi
CONFIGDIR=$(mktemp -d)
CACHEDIR=$(mktemp -d)
if [ -d ${HOME}/.config/${PROGRAM} ]; then
packconfig;
fi
if [ -d ${HOME}/.cache/${PROGRAM} ]; then
packcache;
fi
cleanconfig
unpack
linkdir
run
packconfig
packcache
cleanconfig
cleantemp
fi
quit
########################################################################