Эквивалент команды 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

Это правильный ответ :) точечный источник в PowerShell работает почти так же, как в Bash
— Jaykul

Я понятия не имел, что ты можешь сделать это. красивый.
— DaveParillo

Вау! Почему я не пробовал это раньше? :)
— Шридхар Ратнакумар

1
Есть ли в любом случае это может быть сделано с существующим сценарием cmd? Есть ли результат выполнения сценария cmd в измененной среде powershell?
— peabody

1
Что делать, если вам нужно запустить .batфайл и изменить среду?
— Хлоя
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.