ตัวแปร Bash สามารถใช้สร้างระบบคั่นหน้าได้ ตัวแปรจะทำงานกับคำสั่งใดก็ได้และแท็บ bash จะทำให้ชื่อตัวแปรสมบูรณ์ ในเวอร์ชันที่ใหม่กว่าของ bash หาก a / ถูกผนวกเข้ากับชื่อตัวแปรพา ธ ที่ตัวแปรนั้นมีสามารถแท็บเสร็จสมบูรณ์ได้เช่นกัน
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).
สำหรับการคงอยู่การประกาศตัวแปรสามารถเก็บไว้ในไฟล์ที่มาจาก. bashrc เนื่องจากไฟล์นี้เป็นสคริปต์ทุบตีจึงสามารถมีการประกาศที่อ้างอิงตัวแปรอื่น ๆ เช่นaur="${HOME}/AUR"หรือที่ทำงานเฉพาะกับโฮสต์บางโฮสต์if [[ $HOSTNAME == foo ]]; then bar=baz; fiเท่านั้นซึ่งมีประโยชน์หากคุณใช้ไฟล์กำหนดค่าซ้ำในหลาย ๆ โฮสต์และผู้ใช้
ฟังก์ชั่นทุบตีต่อไปนี้ (ที่จะเพิ่มใน. bashrc หรือที่มาจากมัน) ช่วยให้ที่คั่นหน้าจะเพิ่มและลบออกจากไฟล์ที่คั่นหน้า มันค่อนข้างใหม่และไม่รับประกันว่าจะไม่มีข้อบกพร่อง
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
}