mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-22 15:30: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
|
if [[ ${parent_file[1,2]} == './' ]]; then
|
||||||
echo ${parent_file#./}
|
echo ${parent_file#./}
|
||||||
else
|
else
|
||||||
echo ${parent_file:A}
|
echo ${parent_file:a}
|
||||||
fi
|
fi
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -17,6 +17,15 @@ Should not get the file from the current dir.
|
|||||||
$ _autoenv_get_file_upwards $PWD file
|
$ _autoenv_get_file_upwards $PWD file
|
||||||
*/_autoenv_utils.t/sub/file (glob)
|
*/_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. {{{
|
Tests for _autoenv_authorize. {{{
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user