[powershell] два отдельных понимания, что такое текущая дира.

Dasar

в этом гадском powershell-е оказывается есть два независимых понятия, что такое текущая дира:
одно у самого powershell-а, а другое у .net-а
т.е. pwd выдает одно
а [System.IO.Directory]::GetCurrentDirectory - выдает совсем другое
и как с таким жить?

conv3rsje

bash, но думаю проблема та же
$ 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

Dasar

это ты уже про более тонкие вещи, когда у диры есть два имени.
а здесь такое происходит всегда после смены диры
похоже на то, что powershell пользуется своим мнением, что такое текущая дира, а не системным

Dasar

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-...

Dasar

в идеале бы хотелось, чтобы системная текущая дира ставилась на ту же самую, что и в powershell, если это возможно, а в остальных случаях - ставилось на какую-нибудь несуществующую диру (диру из которой нельзя прочитать/нельзя записать)

Helga87

напиши скрипт/powershell command который будет иметь алиас cd и делать две вещи: переставлять System.Environment.CurrentDirectory и текущую директорию powershell.
Хотя я не помню, насколько там удобно это сделать.

Dasar

напиши скрипт/powershell command который будет иметь алиас cd и делать две вещи: переставлять
если бы речь шла чисто про командную строку - могло прокатить, так как в командной строке едва ли будут возиться с другими способами смены диры.
но проблема возникает в скриптах в основном, а там не факт, что будет использоваться cd
скорее push-location/pop-location, да и set-location в равную с cd

vall

наверно они это учудили т.к. pwd это per-process а они рожают какие-то независимые активности в рамках одного процесса с независимыми pwd

Dasar

наверно они это учудили т.к. pwd это per-process а они рожают какие-то независимые активности в рамках одного процесса с независимыми pwd
это ты как-то совсем не о том
Оставить комментарий
Имя или ник:
Комментарий: