Я - пользователь bash, пробующий zsh в первый раз.В bash у меня есть функции для управления путями, такие как добавление каталога к пути, только если
- этот каталог существует, и
- , если этот каталог в данный момент не находится в пути.
Для bash у меня есть что-то вроде:
# =============================================================================
# Returns true (0) if element is in the list, false (1) if not
# $1 = list, $2 = element
# =============================================================================
function lcontains() {
found=1 # 1=not found, 0=found
local IFS=:
for e in $1
do
if [[ $2 == $e ]]
then
found=0
break
fi
done
return $found
}
# =============================================================================
# Appends into a list an element
# $1 = list, $2 = element
# =============================================================================
function lappend() {
if [[ -d $2 ]] && ! lcontains "$1" "$2"
then
echo $1:$2
else
echo $1
fi
}
# Usage:
export PATH=$(lappend $PATH ~/bin)
# Add the same path again, and result in no duplication
export PATH=$(lappend $PATH ~/bin)
Проблема в том, что в zsh функция lcontains
не работает, потому что zsh не разделяет пробелы по умолчанию,Итак, есть ли способ достичь моей цели?