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