我使用的是 Mac OS X 10.10。突然,每当我打开新选项卡时,我的“终端”就会开始运行命令。这很令人沮丧,因为我习惯于在打开选项卡时立即输入,并在输入命令时执行命令。
例如,在出现此问题之前,我可以按cmd+T然后立即输入bin/rails c
,当选项卡准备就绪时,bin/rails c
就会出现在命令行上,我只需按 即可enter。现在,发生了以下情况:
bin/lserman-5:test lserman$ bin/cd /workspace/test/app/helpers
-bash: bin/cd: No such file or directory
lserman-5:test lserman$ rails c
运行的命令是cd /workspace/test/app/helpers
,当我正在输入 时执行bin/rails c
。这也是一件麻烦事,因为当我习惯于在上一个选项卡所在的相同位置打开选项卡时,终端会切换到不同的目录。例如,这是我在不立即输入任何内容的情况下按下+cd
时得到的:cmdT
lserman-5:test lserman$ cd /workspace/test/app/helpers
lserman-5:helpers lserman$
实际命令似乎每隔几天就会改变一次。我不知道是什么原因造成的。如果我没记错的话,它似乎总是某种形式的cd
。我查看了.profile
、.bash_profile
和.bashrc
,没有发现任何异常。还有什么可能导致这种情况发生?
内容/etc/profile
:
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
内容/etc/bashrc
:
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
# Tell the terminal about the working directory at each prompt.
if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then
update_terminal_cwd() {
# Identify the directory using a "file:" scheme URL,
# including the host name to disambiguate local vs.
# remote connections. Percent-escape spaces.
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
PROMPT_COMMAND="update_terminal_cwd; $PROMPT_COMMAND"
fi
答案1
这很令人沮丧,但调试起来应该不太难。检查/etc/profile
和有点太深奥和过度了。我要检查的/etc/bash.rc
第一个地方是每次打开新窗口时都会加载的用户特定的 shell 环境文件:~/.bash_profile
和~/.bash_login
。~/.profile
我猜至少其中一个文件的末尾附加了一些命令垃圾。所有这些文件的作用都是定义您的本地 Bash shell 环境,也就是您第一次打开“终端”窗口或在“终端”中打开新选项卡时看到的内容。
像这样查看每个文件;我在此示例中使用,nano
但您可以随意使用您喜欢的任何纯文本编辑器
nano ~/.bash_profile
nano ~/.bash_login
nano ~/.profile
cd /workspace/test/app/helpers
只需在其中任何/所有命令中查找错误命令并删除该命令即可。
另外,如果您担心删除这些文件中的任何内容,只需用注释掉这些行,然后#
看看会发生什么。只要命令被注释掉,它就不会运行。如果它不运行,就不会再有错误。
答案2
我刚刚完全关闭了终端,然后打开了一个新窗口,问题就解决了。只有旧窗口中的新选项卡坏了。不知道是什么问题,但是……现在问题已经消失了。