mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-15 22:44:01 +00:00
Correctly inherit a virtual PWD
PWD is not set in fish vars because it is read only. Use getenv() to fetch it, allowing fish to inherit a virtual PWD. This cherry pick includes both:24f251e04
Correctly remove the test directory again in cd test91a9c9897
Correctly inherit a virtual PWD Fixes #5525
This commit is contained in:
parent
d88be7b5c8
commit
dfa61926e8
4 changed files with 22 additions and 1 deletions
|
@ -962,7 +962,11 @@ void env_init(const struct config_paths_t *paths /* or NULL */) {
|
|||
|
||||
// initialize the PWD variable if necessary
|
||||
// Note we may inherit a virtual PWD that doesn't match what getcwd would return; respect that.
|
||||
if (env_get(L"PWD").missing_or_empty()) {
|
||||
// Note we treat PWD as read-only so it was not set in vars.
|
||||
const char *incoming_pwd = getenv("PWD");
|
||||
if (incoming_pwd && incoming_pwd[0]) {
|
||||
env_set_one(L"PWD", ENV_EXPORT | ENV_GLOBAL, str2wcstring(incoming_pwd));
|
||||
} else {
|
||||
env_set_pwd_from_getcwd();
|
||||
}
|
||||
env_set_termsize(); // initialize the terminal size variables
|
||||
|
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
####################
|
||||
# cd symlink completion
|
||||
|
||||
####################
|
||||
# Virtual PWD inheritance
|
||||
|
|
10
tests/cd.in
10
tests/cd.in
|
@ -38,6 +38,16 @@ complete -C'ls ../'
|
|||
echo "cd:"
|
||||
complete -C'cd ../'
|
||||
|
||||
logmsg Virtual PWD inheritance
|
||||
# PWD should be imported and respected by fish
|
||||
|
||||
cd $oldpwd
|
||||
mkdir -p $base/realhome
|
||||
set fish_path $PWD/../test/root/bin/fish
|
||||
ln -s $base/realhome $base/linkhome
|
||||
cd $base/linkhome
|
||||
env HOME=$base/linkhome $fish_path -c 'echo PWD is $PWD'
|
||||
|
||||
# cd back before removing the test directory again.
|
||||
cd $oldpwd
|
||||
rm -Rf $base
|
||||
|
|
|
@ -17,3 +17,7 @@ cd:
|
|||
../a2/
|
||||
../a3/
|
||||
../rabbithole/
|
||||
|
||||
####################
|
||||
# Virtual PWD inheritance
|
||||
PWD is /tmp/cdcomp_test/linkhome
|
||||
|
|
Loading…
Reference in a new issue