[powershell] два отдельных понимания, что такое текущая дира.
$ cd /tmp/
$ mkdir dir
$ ln -s dir link
$ cd dir; pwd; /bin/pwd; cd ../
/tmp/dir
/tmp/dir
$ cd link; pwd; /bin/pwd; cd ../
/tmp/link
/tmp/dir
Шелловский pwd смотрит на то, куда ты cd делал, а /bin/pwd (в твоём случае System.IO....) берет инфу из системного getcwd
а здесь такое происходит всегда после смены диры
похоже на то, что powershell пользуется своим мнением, что такое текущая дира, а не системным
The reason this is showing up as a Power User Tip is that PowerShell doesn’t set this environment setting when you navigate — it uses it’s internal “PSProvider” architecture, and doesn’t differentiate between whether you’re in a FileSystem location or a registry location, or even a third-party provider. So, it never actually changes the current directory, and any console command or .net method you call which uses the current directory will most likely be in the wrong place — like, for instance:http://huddledmasses.org/powershell-power-user-tips-current-...
...
в идеале бы хотелось, чтобы системная текущая дира ставилась на ту же самую, что и в powershell, если это возможно, а в остальных случаях - ставилось на какую-нибудь несуществующую диру (диру из которой нельзя прочитать/нельзя записать)
Хотя я не помню, насколько там удобно это сделать.
напиши скрипт/powershell command который будет иметь алиас cd и делать две вещи: переставлятьесли бы речь шла чисто про командную строку - могло прокатить, так как в командной строке едва ли будут возиться с другими способами смены диры.
но проблема возникает в скриптах в основном, а там не факт, что будет использоваться cd
скорее push-location/pop-location, да и set-location в равную с cd
наверно они это учудили т.к. pwd это per-process а они рожают какие-то независимые активности в рамках одного процесса с независимыми pwd
наверно они это учудили т.к. pwd это per-process а они рожают какие-то независимые активности в рамках одного процесса с независимыми pwdэто ты как-то совсем не о том
Оставить комментарий
Dasar
в этом гадском powershell-е оказывается есть два независимых понятия, что такое текущая дира:одно у самого powershell-а, а другое у .net-а
т.е. pwd выдает одно
а [System.IO.Directory]::GetCurrentDirectory - выдает совсем другое
и как с таким жить?