As variáveis bash podem ser usadas para criar um sistema de favoritos. As variáveis funcionarão com qualquer comando e o bash completará o nome da variável na guia. Nas versões mais recentes do bash, se a / for anexado ao nome da variável, o caminho que a variável contém também pode ser preenchido com tabulação.
mydir=/home/chris/dir
ls $my # Tab completion works on variable name.
ls $mydir/ # Tab completion is equivalent to that with ls /home/chris/dir/
# (doesn't work in older versions of bash).
Para persistência, as declarações de variáveis podem ser mantidas em um arquivo originário de .bashrc. Como esse arquivo é um script bash, ele pode conter declarações que referenciam outras variáveis, como aur="${HOME}/AUR"ou que são executadas apenas em determinados hosts if [[ $HOSTNAME == foo ]]; then bar=baz; fi, o que é útil se você reutilizar arquivos de configuração em vários hosts e usuários.
A seguinte função bash (a ser adicionada ao .bashrc ou originada dele) permite que os indicadores sejam adicionados e removidos do arquivo de indicadores. É relativamente novo e não é garantido que esteja livre de erros.
bookmark_file=~/.bookmarks
source "$bookmark_file"
bm() {
usage='Usage:
bm add <name> <path> Create a bookmark for path.
bm add <name> Create a bookmark for the current directory.
bm update Source the bookmark file.
bm remove <name> Remove a bookmark'
case $1 in
add)
local path
if [[ $# -eq 2 ]]; then
path=.
elif [[ $# -eq 3 ]]; then
if [[ -e $3 ]]; then
path="$3"
else
echo "bm: ${3}: No such file or directory."
return 1
fi
else
echo "$usage"
return 1
fi
if declare | grep "^${2}=" > /dev/null; then
echo "bm: The name $2 is in use."
return 1
fi
path=$(readlink -f "$path")
echo ${2}=\""$path"\" >> "$bookmark_file"
eval ${2}=\""$path"\"
return 0
;;
update)
if [[ $# -eq 1 ]]; then
source "$bookmark_file"
return 0
fi
;;
remove)
if [[ $# -eq 2 ]]; then
unset $2
local contents=$(grep -v "^${2}=" "$bookmark_file")
echo "$contents" > "${bookmark_file}.tmp"
rm -f "$bookmark_file"
mv "${bookmark_file}.tmp" "$bookmark_file"
return 0
fi
;;
esac
echo "$usage"
return 1
}