当我打开终端时,是什么导致了所有这些“declare -x …”行?

当我打开终端时,是什么导致了所有这些“declare -x …”行?

当我在 Fedora 机器上打开一个终端(或 ssh 进入)时,我在提示符前看到了一堆这样的行:

declare -x CVS_RSH="ssh"
declare -x DISPLAY="localhost:10.0"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"

这是什么原因造成的?这可能是在我编辑我的之后发生的.bashrc,但我相信我所做的更改只是向“PATH=”添加了另一个目录路径。

更新(响应重型的回答):我搜索了~/.bashrc~/.bash_profile/etc/bashrc“declare”,但什么也没找到。

我查看了/etc/bashrc因为~/.bashrc包含以下内容:

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

除了上面的代码“PATH=…”、“export …”和“alias …”之外,我在~/.bashrc或脚本中看不到任何内容。~/.bash_profile

当我运行.bashrc脚本(使用“ bash ~/.bashrc”)或.bash_profile脚本时,我会看到“声明”列表,但没有错误消息。(如果我运行,我什么也看不到/etc/bashrc。)

~./bash_profile非常简单:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

解决了: 谢谢安德鲁,您的建议帮助我找到了原因。事实证明,如果运行export(单独运行),所有这些“declare -x …”行都会输出,而我无意中在.bashrc.

答案1

跑步

env - HOME="$HOME" /bin/bash --login -xv 2>&1 | tee foo

以详细模式启动 bash。这将打印初始化文件读取时的每一行,以及初始化文件执行时的每一行,并将输出复制到名为的文件中foo。然后您可以查看foo导致declare -x调用的原因。

答案2

发现许多语句是在没有参数的情况下在某处运行declare ...的结果。export

我在我的中发现了一个意外的换行符.bashrc

export
VARIABLE=value

这应该是

export VARIABLE=value

答案3

是的,它很可能来自你的 .bashrc,因为你编辑了它。你可能在脚本中引入了语法错误,这可能会导致输出该错误。

您可以通过输入以下内容来确保这些行存在于您的 .bashrc 中:

grep declare ~/.bashrc

您应该至少看到这 4 行打印到控制台。您还可以尝试从提示符运行 .bashrc 脚本,看看是否有任何错误输出:

bash ~/.bashrc

相关内容