This prevents issues where autoenv scripts use $0. When a shell enters the directory holding the autoenv scripts, it works as expected with $0 being the path to the symlink. However, if the shell enters one of its child directories the path to the script is dereferenced, and $0 is instead the path to the symlink's target.
From `man 1 zshexpn`:
> A – Turn a file name into an absolute path as the 'a' modifier does, and then pass the result through the realpath(3) library function to resolve symbolic links.
Note: Symlinks are dereferenced elsewhere for authorization, so that behavior is unchanged.
if [[ ${parent_file[1,2]} == './' ]]; then
echo ${parent_file#./}
else
- echo ${parent_file:A}
+ echo ${parent_file:a}
fi
break
fi
$ _autoenv_get_file_upwards $PWD file
*/_autoenv_utils.t/sub/file (glob)
+_autoenv_get_file_upwards should not dereference symlinks.
+
+ $ cd ../..
+ $ ln -s sub symlink
+ $ cd symlink/sub2
+ $ _autoenv_get_file_upwards . file
+ ../file
+ $ _autoenv_get_file_upwards $PWD file
+ */_autoenv_utils.t/symlink/file (glob)
Tests for _autoenv_authorize. {{{