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


15

当我在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 =“。

更新(响应Heavyd的回答):我grep'ed ~/.bashrc~/.bash_profile/etc/bashrc进行了“声明”,但未发现任何内容。

我查看是/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

解决:谢谢andrew.n,您的建议帮助我进行了跟踪。事实证明,如果仅运行一个,就会输出所有那些“ declare -x…”行export,而我不小心在自己的“ export”和“ PATH =…”之间插入了一个CR .bashrc


看在/etc/profile.d/在
自由报

我应该在/etc/profile.d/中寻找什么?这些都是什么文件?(也许我应该对此提出一个新的问题。)
Daryl Spitzer

谢谢。就我而言,它也是export和PATH之间的CR :)
marlar 2012年

Answers:


8

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

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


6

弄清楚很多declare ...语句是在export没有参数的情况下运行的结果。

我在我的偶然发现了换行符.bashrc

export
VARIABLE=value

哪个应该

export VARIABLE=value

是。这是正确的答案。如果您在终端中单独键入“ export”,则会看到显示相同的clarify -x输出。
Sterling Bourne

是的,这适用于我!我不小心将导出内容放在下一个新行中。我把它们放在同一行,并且可以正常工作。
fanchyna

3

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

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

grep declare ~/.bashrc

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

bash ~/.bashrc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.