sudo: node: команда не найдена

Firefox, кажется, случайно использует любой из установленных словарей. Несколько английских словарей устанавливаются по умолчанию в Ubuntu. Решение состоит в том, чтобы удалить все, кроме американского английского словаря, с помощью apt-get.

Из того, как я могу изменить словарь по умолчанию Firefox ?, Insperatus опубликовал эту полезную команду.

sudo apt-get remove myspell-en-au myspell-en-gb myspell-en-za hunspell-en-ca && sudo apt-get install myspell-en-us

До:

[ ! d6]

После:

firefox spelling language before removal

4
задан 13 September 2017 в 16:13

3 ответа

Нет, sudo не сохраняет вашу переменную среды $PATH по соображениям безопасности. Вместо этого он заменяется на secure_path, определенный в /etc/sudoers, который вы не должны изменять.

$ sudo grep secure_path /etc/sudoers
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Вы считаете, что убедитесь, что переменная $PATH остается неизменной с вашей командой [ ! d2]

sudo echo $PATH

, но на самом деле Bash расширяет переменные, прежде чем приступать к выполнению любой команды (здесь sudo), что означает, что приведенная выше строка показывает ваше собственное значение $PATH. Чтобы получить это как sudo, используйте, например,

sudo bash -c 'echo $PATH'

. Что вы можете сделать, например, например? разрешите команду, которую вы хотите запустить (node или npm) в оболочке вашего собственного пользователя, используя замену процесса с помощью which:

sudo "$(which npm)" install -g angular-cli
sudo "$(which node)" app.js

Это сначала запускает which npm или which node as ваш пользователь, который возвращает абсолютный путь к исполняемым файлам, принадлежащим указанным командам. Затем этот вывод буквально вставлен в вашу команду sudo, поэтому sudo на самом деле полагает, что он был выполнен с абсолютными путями, как показано ниже, устраняя необходимость искать что-либо в $PATH:

sudo /home/dc/node/bin/npm install -g angular-cli
sudo /home/dc/node/bin/node app.js
5
ответ дан 22 May 2018 в 18:31

Нет, sudo не сохраняет вашу переменную среды $PATH по соображениям безопасности. Вместо этого он заменяется на secure_path, определенный в /etc/sudoers, который вы не должны изменять.

$ sudo grep secure_path /etc/sudoers Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Вы считаете, что убедитесь, что переменная $PATH остается неизменной с вашей командой [ ! d2] sudo echo $PATH

, но на самом деле Bash расширяет переменные, прежде чем приступать к выполнению любой команды (здесь sudo), что означает, что приведенная выше строка показывает ваше собственное значение $PATH. Чтобы получить это как sudo, используйте, например,

sudo bash -c 'echo $PATH'

. Что вы можете сделать, например, например? разрешите команду, которую вы хотите запустить (node или npm) в оболочке вашего собственного пользователя, используя замену процесса с помощью which:

sudo "$(which npm)" install -g angular-cli sudo "$(which node)" app.js

Это сначала запускает which npm или which node as ваш пользователь, который возвращает абсолютный путь к исполняемым файлам, принадлежащим указанным командам. Затем этот вывод буквально вставлен в вашу команду sudo, поэтому sudo на самом деле полагает, что он был выполнен с абсолютными путями, как показано ниже, устраняя необходимость искать что-либо в $PATH:

sudo /home/dc/node/bin/npm install -g angular-cli sudo /home/dc/node/bin/node app.js
6
ответ дан 18 July 2018 в 06:56

Нет, sudo не сохраняет вашу переменную среды $PATH по соображениям безопасности. Вместо этого он заменяется на secure_path, определенный в /etc/sudoers, который вы не должны изменять.

$ sudo grep secure_path /etc/sudoers Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Вы считаете, что убедитесь, что переменная $PATH остается неизменной с вашей командой [ ! d2] sudo echo $PATH

, но на самом деле Bash расширяет переменные, прежде чем приступать к выполнению любой команды (здесь sudo), что означает, что приведенная выше строка показывает ваше собственное значение $PATH. Чтобы получить это как sudo, используйте, например,

sudo bash -c 'echo $PATH'

. Что вы можете сделать, например, например? разрешите команду, которую вы хотите запустить (node или npm) в оболочке вашего собственного пользователя, используя замену процесса с помощью which:

sudo "$(which npm)" install -g angular-cli sudo "$(which node)" app.js

Это сначала запускает which npm или which node as ваш пользователь, который возвращает абсолютный путь к исполняемым файлам, принадлежащим указанным командам. Затем этот вывод буквально вставлен в вашу команду sudo, поэтому sudo на самом деле полагает, что он был выполнен с абсолютными путями, как показано ниже, устраняя необходимость искать что-либо в $PATH:

sudo /home/dc/node/bin/npm install -g angular-cli sudo /home/dc/node/bin/node app.js
6
ответ дан 24 July 2018 в 18:42

Другие вопросы по тегам:

Похожие вопросы: