我一直在编辑.bashrc
个文件和其他初始化文件,似乎我留下了一些代码片段或两个在提示符处导致一些错误的代码片段(例如文件丢失),但是我找不到他们。
如何调试提示以找出我不小心入侵的init脚本?
答案 0 :(得分:9)
大多数shell都有调试标志,显示正在执行的命令。 Bash甚至可以在扩展变量之前和之后显示一个命令。您是否尝试过检查(我相信)-c -x或-X标志,看看它们是否显示您要查找的信息。
你可以将它们设置为rc文件中的第一个东西(大多数全局一个),或者通过从另一个shell调用它将它传递给bash命令。
实际上,如果从另一个shell调用bash,您还可以使用 script 命令将您看到和执行的所有内容记录到文件中,这使得事后分析变得更加容易。
答案 1 :(得分:9)
尝试使用-x标志调用bash,然后获取.bashrc或.bash_profile或您正在使用的任何内容。这应该足以找到你的问题
即:
bash -x
source .bashrc
答案 2 :(得分:3)
获得干净初始状态的最简单方法是通过SSH连接到当前主机,但不是让SSH使用默认设置启动shell,而是提供一个显式命令阻止.bashrc
被读取。
ssh -tt localhost /bin/bash --norc
-tt
强制SSH分配TTY,这是打开shell连接时通常会发生的情况,但在运行显式命令时不是默认值。
--norc
阻止bash读取你的设置文件(因为我们想自己做)。
现在,您应该在 clean 环境中处于bash提示符下。这对于检查.bashrc
运行之前设置的变量等非常有用。启用跟踪并获取.bashrc
:
set -x # Enable tracing
source .bashrc
答案 3 :(得分:0)
尝试查看您已定义提示的位置 - 可能是您主目录中的某个点文件:
grep PS1 ~/.*
只需打印即可看到提示的当前值:
echo $PS1
HTH
答案 4 :(得分:0)
检查主目录中的.bash_history
文件,找出您正在运行的命令。如果您使用vi filename
之类的命令打开init脚本,它将在命令历史记录中找到它们。