我删除了 rvm,但是现在每次我删除它时ls
都会收到此消息:
-bash: /usr/local/rvm/scripts/initialize: No such file or directory
看起来它仍在从某个地方调用它,但似乎找不到从哪里调用它。我如何才能看到它在哪里被调用?
答案1
知道所调用文件的名称会使事情变得更容易。
创建文件/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
答案2
在所有相关的 bash 脚本中,在 #!/bin/bash 后面添加“set -x”作为行可能会有所帮助。
您还可以尝试“strace”,因为它将显示系统调用,例如文件打开和 stderr/stdout。
答案3
检查你的 bash 初始化文件:
grep rvm ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_login \
/etc/bash.bashrc /etc/profile
您的目录下的某些文件$HOME
可能不存在,这将向您显示有关没有此类文件的错误消息,但您可以放心地忽略它。