Эквивалент команды bash `source` в Powershell?

15

Чтобы запустить bash-скрипт построчно (например, чтобы сохранить переменные окружения), нужно сделать следующее:

$ . myscript.sh

Или:

$ source myscript.sh

У меня есть сценарий PowerShell, который, среди прочего, устанавливает значение приглашения с помощью вызываемой функцииprompt . Простой запуск этого сценария (". \ Myscript.ps1") не меняет приглашение. Тем не менее, запуск функции построчно как команда делает.

Так что мне нужно что-то вроде sourceкоманды для PowerShell. Является ли это возможным?

РЕДАКТИРОВАТЬ : Должен ли этот пост быть перемещен в Stackoverflow?

Пояснение 1. Поскольку я запускаю эту функцию только по мере необходимости (т. Е. Не для каждого сеанса PowerShell и / или всегда), я не хочу хранить его в своем профиле запуска PowerShell.

Шридхар Ратнакумар
источник
Примечание: ваши две команды Bash разные. Вы, вероятно, не хотели иметь точку во второй или вы имели в виду, что у них обоих в начале имени скрипта должен быть "./" (текущий каталог).
Приостановлено до дальнейшего уведомления.
Исправлено (удалив точку)
Шридхар Ратнакумар

Ответы:

29

Вы также можете « поставить точку » в PowerShell. Вам просто нужно убедиться, что вы указали полный путь. Итак, если скрипт, который вы хотите загрузить, находится в локальном каталоге, вы должны сделать:

PS C:\>. .\myscript.ps1
Zdan
источник
Это правильный ответ :) точечный источник в PowerShell работает почти так же, как в Bash
Jaykul
Я понятия не имел, что ты можешь сделать это. красивый.
DaveParillo
Вау! Почему я не пробовал это раньше? :)
Шридхар Ратнакумар
1
Есть ли в любом случае это может быть сделано с существующим сценарием cmd? Есть ли результат выполнения сценария cmd в измененной среде powershell?
peabody
1
Что делать, если вам нужно запустить .batфайл и изменить среду?
Хлоя