У меня недавно установлен centos 7 только с некоторыми проектами nodejs. Затем я нашел which
команда не работает должным образом.
# which ls
which: illegal option -- -
usage: which [-as] program ...
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
но это работает:
# /usr/bin/which ls
/usr/bin/ls
Затем я сделал cat /usr/bin/which
, обнаружил, что он был заменен программой nodejs!
#!/usr/bin/env node
var which = require("../")
if (process.argv.length < 3)
usage()
function usage () {
console.error('usage: which [-as] program ...')
process.exit(1)
}
... ...
which
команда - это программа узла
# ls -la /usr/bin/which
lrwxrwxrwx 1 root root 63 Jul 5 20:43 /usr/bin/which -> ../local/share/.config/yarn/global/node_modules/which/bin/which
Я запутался, черт возьми, какого черта nodejs заменяет отлично работающую системную команду?
Теперь вопрос, как это исправить? Могу я просто удалить файл и скопировать which
с другого компа (вм)?
Вот как я установил nodejs и yarn. Остальные модули были установлены в директории проекта.
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum install nodejs
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum install yarn
yarn global add nuxt
yarn global add cross-env
npm install pm2 -g
У меня такая же проблема при установке пряжи в Fedora.
Я понимаю эту команду который, вызов без использования абсолютного пути, на самом деле является псевдонимом.
# alias which
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
Используя следующую команду rpm в Fedora, я также мог подтвердить / usr / bin / который софт линк был заменен.
# rpm -V which
....L.... /usr/bin/which
Решил проблему переустановкой который пакет.
sudo yum reinstall which
Я не думаю, что nodejs должен заменять важную системную программу, поэтому гость это было проблемой в команде разработчиков nodejs.
PS: Извините за мой английский.