Сначала базовый синтаксис bash: цикл for заканчивается зарезервированным словом done.
for f in *.jpg
do
gsettings set org.gnome.desktop.background picture-uri file:$f
done
Кроме того $f - относительный путь - это имя файла в текущем каталоге , Но, как заметил Фейрай, имя файла не будет значимым из контекста. Вам необходимо предоставить абсолютный путь. Вы можете сделать это легко с переменной PWD, которая всегда содержит путь к текущему каталогу. Обратите внимание, что для URL file:// требуется два слэша для индикатора :// плюс косая черта для корневого каталога, который запускает путь, к которому относится $PWD.
for f in *.jpg
do
gsettings set org.gnome.desktop.background picture-uri file://$PWD/$f
done
Это еще не все. Если какое-либо имя файла содержит пробел, ваш скрипт не будет работать. Чтобы избежать этой ловушки, feyray заметил (всегда ставьте двойные кавычки вокруг переменных подстановок).
for f in *.jpg
do
gsettings set org.gnome.desktop.background picture-uri "file://$PWD/$f"
done