dotnet-install.sh 未在 Ubuntu 上添加 dotnet 命令

lbr*_*him 4 linux bash ubuntu .net-core asp.net-core

我不是 Linux 用户,所以这可能很容易解决,但我尝试了以下方法:

  1. 首先,我使用curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin得到以下结果的命令安装它:

dotnet-install: .NET Core SDK 版本 2.1.403 已经安装。dotnet-install: 添加到当前进程 PATH:
/home/<!username!>/.dotnet。注意:此更改仅在采购脚本时可见。dotnet-install:安装成功完成。

  1. 我确实. ~/.profile要重新加载配置文件,但即使在此之后运行时,我也会dotnet收到以下错误:

找不到命令“dotnet”,但可以使用以下命令安装:sudo snap install dotnet-sdk`

我期待脚本做所有事情并dotnet提供。

Oma*_*jid 6

TLDR:curl | bash无法修改,PATH因此不会添加dotnet到您的PATH. 您需要dotnet手动添加到您的路径。添加export PATH="$PATH:/home/<!username!>/.dotnet"到您的~/.profile(或~/.bashrc等效的)并注销并重新登录。

长版:

当您在 shell 中运行命令(例如,bash)时,shell 会尝试在环境变量中列出的所有路径中查找具有名称的可执行文件PATHPATH通常设置为类似/bin:/usr/bin. 因此,当您键入类似 的命令时curl,您的 shell 会同时查找/bin和查找/usr/bin名为curl.

您可以PATH通过执行env | grep PATH或来查看您的内容echo $PATH

另一个重要的信息是环境变量如何传播。其实很简单:

  1. 一个程序(或进程)只能修改它自己的一组环境变量。
  2. 进程创建的任何子进程都会继承其环境变量。

这意味着您执行的程序不能修改另一个随机程序的环境变量。shell 实际上提供了一个特殊的命令export来设置它自己的环境变量(它以后创建的任何子进程都将继承这些)。

请注意步骤 1 结束时的输出。

注意:此更改仅在采购脚本时可见。

如果您运行curl | bash,它将bash作为子进程运行。该子进程无法修改启动它的程序(调用 的shell curl | bash)的环境变量。所以它不能修改PATH添加位置dotnet。它甚至(有帮助地)告诉你它不能。

在第 2 步中,您正在重新加载~/.profile. 但它是否包含任何要添加dotnet到的命令PATH?我不这么认为。我知道 dotnet-install.sh 脚本历史上没有添加它。你需要添加一行

export PATH="$PATH:/home/<!username!>/.dotnet"
Run Code Online (Sandbox Code Playgroud)

手动发送到您的~/.profile(或~/.bashrc,或等效的)。

实际上,我将其编写如下以使更改更易于其他用户使用:

export PATH="$PATH:$HOME/.dotnet"
Run Code Online (Sandbox Code Playgroud)