【问题标题】:dotnet-install.sh not adding dotnet command on Ubuntudotnet-install.sh 未在 Ubuntu 上添加 dotnet 命令
【发布时间】:2019-04-10 11:35:17
【问题描述】:

我不是 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 可用。

【问题讨论】:

  • 那么,你运行sudo snap install dotnet-sdk了吗?
  • @miken32 不,我没有尝试过。因为从我在文档中读到的内容来看,脚本应该已经这样做了。

标签: linux bash ubuntu asp.net-core .net-core


【解决方案1】:

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

长版:

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

您可以通过env | grep PATHecho $PATH 来查看您的PATH 是什么。

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

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

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

注意第 1 步结束时的输出。

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

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

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

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

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

实际上,我会这样写,以使更改更便于其他用户移植:

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

【讨论】:

  • 您可以运行source ~/.zshrc 或任何您选择的shell,而不是注销。
  • 如果没有 $HOME/.dotnet 文件怎么办?
  • 如果没有$HOME/.dotnet,这通常意味着dotnet-install.sh 没有正常工作。您可以将其作为一个新问题发布,并提供运行命令的输出吗?
【解决方案2】:

再次尝试运行:

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

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2021-11-25
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多