Bash bookmarking

# enable custom tab completion 
shopt -s progcomp 

# jump to bookmark 
function g { 
  source ~/.sdirs 
  cd $(eval $(echo echo $(echo \$DIR_$1))) 
} 

# list bookmarks without dirname 
function _l { 
  source ~/.sdirs 
  env | grep "^DIR_" | cut -c5- | grep "^.*=" | cut -f1 -d "=" 
} 

# completion command for g 
function _gcomp { 

  local curw 

  COMPREPLY=() 
  curw=${COMP_WORDS[COMP_CWORD]} 
  COMPREPLY=($(compgen -W '`_l`' -- $curw)) 

  return 0 
} 

# bind completion command for g to _gcomp 
complete -F _gcomp g

# Usage: g [TAB] 

From here