Как создать псевдоним Powershell (или функцию, или командлет), который выполняется в том же процессе, что и моя оболочка? - PullRequest
4 голосов
/ 29 июля 2011

В Unix я создаю много псевдонимов / функций. Вот мой рабочий процесс:

* I have a file named 'aliases.txt' in my $HOME directory
* I have a quick command to edit that file
* I have an alias named 'sa' that sources that alias file. I.e.

  alias sa='. $HOME/aliases.txt

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

Я пытаюсь воссоздать тот же рабочий процесс в Powershell, и он не работает. У меня есть файл aliases.ps1 в моем каталоге $ HOME. Я попытался создать псевдоним 'sa', но, конечно, псевдоним Powershell не может содержать аргумент. Итак, я попробовал

function sa {. $HOME\aliases.ps1 }

Я могу запустить его, но изменения в моем файле aliases.pl1 не отражаются в моем сеансе оболочки. Я предполагаю, что это потому, что Windows запускает функцию 'sa' в новом процессе, в то время как Unix запускает функции и псевдонимы в том же процессе. Как я могу вернуть свой «са»?

(Кстати, "Введите '. $ HOME \ aliases.ps1' в командной строке каждый раз" - это не тот ответ, который я ищу.

Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 29 июля 2011

Достаточно ли кратко будет

. sa

?Вам просто нужно поставить точку вызова функции в текущей области видимости.(Обратите внимание, что между точкой и именем функции должен быть пробел).

0 голосов
/ 29 июля 2011

Что вы пытаетесь сделать?Некоторые части вашего вопроса не имеют смысла.

Хорошо, теперь я понимаю лучше.

Import-Alias именно для этой цели!Отредактируйте файл и выполните Import-Alias file, и вы получите новые псевдонимы, которые вы добавили.


Ваш поток:

Используйте команду Set-Alias, чтобы настроить псевдоним и добавитьв свой профиль или просто добавьте эту функцию в профиль.

notepad $profile
(add the next in notepad)
function sa {. HOME\aliases.ps1 }

Теперь sa должен быть доступен, и aliases.ps1 можно настроить на использование Set-Alias и добавить псевдонимы.

Вы пытаетесь сопоставить то, что вы делаете в Unix, ТОЛЬКО с Powershell.Вы должны попробовать и использовать то, что PowerShell предлагает:

Поток Powershell:

 notepad $profile
 (in notepad)
 Set-Alias <alias> <command>

Просто добавьте команду Set-Alias ​​в свой профиль.

Или используйте Export-Aliasэкспортировать в файл и добавить Import-Alias для импорта из файла в вашем профиле.

Все это прекрасно объяснено здесь: http://technet.microsoft.com/en-us/library/ee692685.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...