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

时间:2018-11-07 02:00:12

标签: linux bash ubuntu asp.net-core .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可用。

2 个答案:

答案 0 :(得分:3)

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

长版:

当您在外壳程序中运行命令(例如bash)时,外壳程序会尝试在环境变量PATH中列出的所有路径中找到具有名称的可执行文件。 PATH通常设置为/bin:/usr/bin之类的东西。因此,当您键入诸如curl之类的命令时,您的外壳会在/bin/usr/bin中查找名为curl的可执行文件。

您可以通过执行PATHenv | grep PATH来查看echo $PATH是什么。

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

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

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

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

  

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

如果您运行curl | bash,它将作为子进程运行bash。该子进程无法修改启动它的程序(调用curl | bash的外壳)的环境变量。因此,它无法修改PATH来向其中添加dotnet的位置。它甚至(有帮助)告诉您它不能。

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

export PATH="$PATH:/home/<!username!>/.dotnet"

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

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

export PATH="$PATH:$HOME/.dotnet"

答案 1 :(得分:0)

尝试再次运行:

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2