当我在 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