Как стать автором
Обновить
50
0
Friedrich von Never @ForNeVeR

Пользователь

Отправить сообщение

У меня пока получилось только так:


PS> new-alias curl echo # чтобы скрыть нативную утилиту
PS> curl --version # так не работает
--version
PS> @curl --version # и так не работает
PS> & (gcm -c ap curl) --version # а так работает
curl 7.30.0-DEV (x86_64-pc-win32) libcurl/7.30.0-DEV OpenSSL/1.0.1e zlib/1.2.8 libssh2/1.4.4_DEV
...
PS> & (Get-Command -CommandType Application curl) --version # длинный вариант того же, работает

Слушайте, а что за символ @ такой? Что-то у меня не работает, да и в комментариях B. Payette это подтверждает: https://github.com/PowerShell/PowerShell/issues/1975#issuecomment-241267540


Вот моя PowerShell-сессия (curl у меня установлен и доступен в PATH):


PS> curl --version # ожидаем запуска нативного бинарника, его и получаем
curl 7.30.0-DEV (x86_64-pc-win32) libcurl/7.30.0-DEV OpenSSL/1.0.1e zlib/1.2.8 libssh2/1.4.4_DEV
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM SSL libz
PS> new-alias curl echo
PS> curl --version # ожидаем вызова алиаса, его и получаем
--version
PS> @curl # ожидаем запуска нативного бинарника?
строка:1 знак:1
+ @curl
+ ~~~~~
Оператор с символом "@" невозможно использовать для ссылки на переменные в выражении. "@curl" может использоваться только как аргумент для команды. Для ссылк и на переменные в выражении используйте "$curl".
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : SplattingNotPermitted

Вы можете потренировать управляемость уха, и рулить им довольно успешно и с нужной точностью.

Ну, вроде бы да, хром. И из распространённых приложений больше, пожалуй, никто. Даже Microsoft больше ничего не стал заворачивать (впрочем, я не уверен, и с интересом выслушаю поправки к этому утверждению).

  1. Хочет — пускай привлекает, никто ему мешать не собирается. Есть несколько способов для того, чтобы удалить или обойти эти стандартные алиасы как глобально, так и в рамках скрипта/выражения.
  2. Да, пока было принято такое решение. Оно не окончательное; вот тут обсуждаются варианты.

«Скорее всего не приживётся»? Да даже в том треде нашлась пара человек, которые им пользуются. Как-то за 10 лет прижился — впрочем, я лично всегда эти алиасы удаляю в профиле.


как будет выживать PS на nix с такой политикой

На текущий момент все Unix-like алиасы PowerShell на Linux-системах отключены. Так что это "ломающее изменение" сломало бы только Windows-версию. В версиях под Linux и macOS пока ещё ничего не сломано, т.к. сомнительных алиасов там нет.

Пока что по вашему описанию звучит, как парочка не слишком назойливых багов, а не концептуальная проблема. В любом случае, спасибо за ответ.

Интересу ради — а расскажите, где (в чём) комплишен хуже сделан в PowerShell, чем в баше? Просто начиная с Windows 10, по-моему, в повершелле из коробки подключается PSReadline с подсветкой и семантическим автодополнением. Если честно, я такого изкоробочного опыта ни в одном линуксе не припомню (хотя я положительно уверен, что его можно добиться в баше и в альтернативных шеллах тоже).

Ох уж эти алиасы, в первую очередь убиваю их из профиля. Эта парочка действительно сильно мешается :(

Стоит также упомянуть, что в состав Mono входит утилита xbuild, которая умеет собирать "виндовые" солюшены и проекты. Мы этим пользуемся в нескольких случаях. Собранные бинарники работают и на винде, и на линуксе.

Кроме Psake, посмотрите ещё на Invoke-Build. Оно во многом лучше — особенно когда вам хочется пересобрать из группы файлов только те, которые надо. Например, мне надо было только новые SVG сконвертить в PNG. Это очень просто делается на Make или Invoke-Build, но со скрипом шло на Psake и FAKE.

Про систему дистрибьюции нам то же самое говорили про ClickOnce. И где оно? Наверняка некоторые до сих пор используют, но как массовая система — не выстрелило.

Да, это верно. Лично я никогда не использую алиасы в скриптах (за исключением % и ?), но в 90% случаев использую их в командной строке.

Ну, не забывая, что у Get-ChildItem есть нескольо алиасов а-ля dir, gci, ls (последний, впрочем, пока что отключен на линуксе).

Как пользователю мне абсолютно перпендикулярно, кто и как разрабатывает программы, которыми я пользуюсь — до тех пор, пока это не начинает сказываться на их видимой мне функциональности или стоимости.

А уж как он умильно жаловался на отсутствие /usr/bin/perl.exe, такая была милота :)

Не совсем так, как вы подумали. Просто я знаю, что Nagg замешан в разработке некоторых компонентов XS, и поэтому его изначальный выпад в сторону DTE2 делался именно с позиций XS.


Ну и давайте начистоту: я сейчас не пользуюсь XS, но считаю, что здравая конкуренция в сфере IDE для C# будет полезна всем — и MSVS, и VS Code, и XS, и Rider. Если они при этом будут совместимы друг с другом в плане работы нугетовых пакетов и проектной системы — я как пользователь IDE от этого выиграю.

Кстати, на текущий момент эти псевдонимы под Linux отключены — чтобы, как говорят в MS, не лишать пользователей нативных утилит нативного же опыта работы с ними.

Реализуйте уже это DTE у себя в Xamarin Studio, и старушку MSVS можно будет списывать.

Информация

В рейтинге
Не участвует
Откуда
Amsterdam, Noord-Holland, Нидерланды
Зарегистрирован
Активность