mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-12 20:20:59 +02:00
_autoenv_get_file_upwards: do not dereference symlinks (#73)
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.
This commit is contained in:
parent
2db6d69774
commit
7e0d027b21
@ -339,7 +339,7 @@ _autoenv_get_file_upwards() {
|
||||
if [[ ${parent_file[1,2]} == './' ]]; then
|
||||
echo ${parent_file#./}
|
||||
else
|
||||
echo ${parent_file:A}
|
||||
echo ${parent_file:a}
|
||||
fi
|
||||
break
|
||||
fi
|
||||
|
@ -17,6 +17,15 @@ Should not get the file from the current dir.
|
||||
$ _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. {{{
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user