我是一名使用 Mac OSX El Capitan 的计算机科学专业学生。我的朋友让我的电脑say 'heil hitler'
在我登录到终端的新实例时运行。不用说,我需要摆脱它。目前,我已将 /usr/bin/say 重命名为 /usr/bin/0say,以防止它在公共场合运行。我检查了 ~/.bash_profile、~/.bashrc、~/.login、/etc/bashrc。还有其他文件在 bash 登录时自动运行吗?
除此之外,我如何才能找出哪个配置文件实际上调用了给定的命令?
答案1
使用set
命令、手册页这里。 具体来说:
set -x
在执行之前显示扩展后的命令set -v
在扩展之前显示读入的命令
例如,set -xv
在 ~/.profile 的顶部插入,您将看到终端在该行之后执行的所有操作。您可能想要捕获该输出(或从终端复制粘贴到文本文档中)并执行类似操作,grep -B 4 hitler
以便了解它的位置。
答案2
我想到了一些调查技术:
除了您查看过的 shell init 文件之外,还要检查
~/.profile
、~/.bash_login
和/etc/profile
。对于每个用户的 init 文件,请尝试通过重命名来禁用它们;如果删除某个特定文件导致其无法运行
say
,则说明该文件中存在问题。您还可以return
在 init 文件中途放置一个命令,以查看调用say
是在该点之前还是之后。您可以添加
set -x
一个初始化文件,它会在执行命令时让 shell 打印出命令;使跟踪执行变得简单。强力搜索你的主文件夹:
grep -r hitler ~
答案3
看起来你已经解决了这个问题,但我还是应该检查一下我的终端快捷方式。它可能被任意数量的脚本快捷方式替换,而 AppleScript 是最有可能的,可以执行这个恶作剧。