Existem vários problemas aqui. Primeiro, ==
não é padrão, a maneira POSIX é =
. O mesmo vale para o -o
. Este vai funcionar tanto no bash quanto no zsh:
for f in ~/*;
do
if [ "$f" = '/home/sk/.' ] || [ "$f" = '/home/sk/..' ]; then
true
else
echo "$f"
fi
done
Note que seu if
é desnecessário, os arquivos de ponto são ignorados por padrão no bash e no zsh. Você pode simplesmente escrever:
for f in ~/*; do echo "$f"; done
Ou até mesmo
printf "%s\n" ~/*