Как найти, где это упоминается в Bash

0

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

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

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

Martin
источник

Ответы:

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

rici
источник
1

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

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

Jon Brauer
источник
1

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

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

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

terdon
источник