1

我正在尝试在 powershell中模拟 bash 的源命令。目的是对 my 进行任何更改microsoft.powershell_profile.psl并将其源到现有的 powershell 实例中。

以下命令在命令行中工作

$profile_content = [string]::join([environment]::newline,(get-content $profile))
invoke-expression $profile_content

一切都很好; 我把同样的东西放进去microsoft.powershell_profile.psl,它不起作用。

function source{
        $profile_content = [string]::join([environment]::newline,(get-content $args[0]))
        invoke-expression $profile_content
}

我忽略了什么吗?

4

3 回答 3

6

您想要的已经内置在 PowerShell 中:

. C:\path\to\some.ps1

about_Operators

.点源运算符
在当前范围内运行脚本,以便将脚本创建的任何函数、别名和变量添加到当前范围。

. c:\scripts.sample.ps1
于 2013-08-30T17:53:34.727 回答
0

尝试改变你Microsoft.PowerShell_profile.ps1的样子:

function source{
        $profile_content = [string]::join([environment]::newline,(get-content $args[0]))
        invoke-expression $profile_content
}

source $profile

基本上,您不能只定义函数,还需要在文件中调用它。但是,您的函数的设置方式将导致无限循环。function source()用别的东西代替你的。

于 2013-08-30T17:42:02.790 回答
0

以下应该足够了:

function source { . $args }
于 2021-08-11T12:04:29.393 回答