Bash değişkenleri bir yer imi sistemi oluşturmak için kullanılabilir. Değişkenler herhangi bir komutla çalışacak ve bash değişken ismini tamamlayan sekme olacaktır. Bash'ın yeni sürümlerinde, eğer değişken ismine bir / eklenirse, değişkenin içerdiği yol da sekme ile tamamlanabilir.
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).
Kalıcılık için değişken bildirimleri .bashrc kaynaklı bir dosyada tutulabilir. Bu dosya bir bash betiği olduğu için aur="${HOME}/AUR", if [[ $HOSTNAME == foo ]]; then bar=baz; ficonfig dosyalarını birden fazla ana bilgisayar ve kullanıcı için yeniden kullanırsanız kullanışlıdır gibi diğer değişkenlere referans veren veya yalnızca belirli ana bilgisayarlarda çalışan bildirimler içerebilir .
Aşağıdaki bash işlevi (.bashrc dosyasına eklenecek veya bu dosyadan kaynaklanacak), yer imlerinin yer imleri dosyasına eklenmesini ve kaldırılmasını sağlar. Oldukça yeni ve hatalardan arındırılmış olduğu garanti edilmez.
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
}