dotnet-install.sh не добавляет команду dotnet в Ubuntu - PullRequest
0 голосов
/ 07 ноября 2018

Я не пользователь 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 установить dotnet-sdk`

Я ожидал, что скрипт сделает все и сделает dotnet доступным.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Попробуйте запустить это снова:

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
0 голосов
/ 07 ноября 2018

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.

Вы можете увидеть, каков ваш PATH, выполнив env | 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...