Я удалил rvm, но теперь каждый раз, когда я делаю ls я получаю это сообщение:

-bash: /usr/local/rvm/scripts/initialize: No such file or directory

Похоже, он все еще звонит откуда-то, но не может найти, откуда. Как я могу увидеть, где это называется?

3 ответа3

2

Знание имени вызываемого файла облегчает задачу.

Создайте файл /usr/local/rvm/scripts/initialize (вам может потребоваться создать промежуточные каталоги) и дайте ему следующее содержимое:

#!/bin/bash
exec >>/tmp/trace.log
echo $0 Invoked.
P=$$
while (( P > 1 )); do
  printf '%s %s\n' "$(stat -c%N /proc/$P/cwd)" "$(ps -p $P -ocmd=)"
  P=($(ps -p $P -oppid= ) ) || exit
done

Сделайте его исполняемым во всем мире (chmod a+x /usr/local/rvm/scripts/initialize). Затем дождитесь появления файла трассировки. Он будет содержать рабочий каталог и командную строку для каждого процесса в дереве, ведущем к initialize

1

Добавление "set -x" в качестве строки после #!/bin/bash во всех соответствующих скриптах bash может помочь.

Вы также можете попробовать "strace", так как он покажет системные вызовы, такие как открытие файла и stderr/stdout.

1

Проверьте файлы инициализации bash:

grep rvm ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \ 
  /etc/bash.bashrc /etc/profile

Некоторые файлы в вашем каталоге $HOME могут не существовать, что приведет к сообщению об ошибке об отсутствии такого файла, но вы можете смело игнорировать это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .