Win7上的MSYS2在每个命令后打印“找不到文件”?

时间:2015-06-03 16:54:39

标签: linux bash unix msys2

我刚刚在我的Windows 7虚拟机上安装了 MSYS2 ,到目前为止我唯一真正做过的就是通过添加几行来修改我的〜/ .bashrc文件。

我添加到文件中的唯一内容是一些别名cmds,一个导出cmd,我修改了PS1变量。见下文:

alias ll='ls -l'
alias la='ls -A'
alias cls='clear'
export PATH="$PATH:/home/Matt/bin"
PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME}:\033[33m${PWD/${HOME}/\~}>\033[0m ')

除了上面那些东西之外,那就是我真正做过的。因此,在对〜/ .bashrc 进行更改后,我从MSYS2的命令提示符退出,然后重新启动MSYS2以使.bashrc更改生效。 我知道我可以重新获取该文件,但我很快就退出并重新启动了......

然后,在我重新启动MSYS2之后,这打印为终端中的第一行 - > “无法找到文件” 然后每次在cmd提示符下按Enter键时,它会在下一个提示打印到屏幕之前打印“找不到文件” ,如下所示:

Terminal shows this when I start-up MSYS2:
--------------------------------------------------------------------
Can't find file
Matt@My-Win7VM:~> ls -l
total 0
drwxr-xr-x 1 My-Win7VM+Matt My-Win7VM+None 0 Jun  3 12:01 bin
Can't find file
Matt@My-Win7VM:~>
Can't find file
Matt@My-Win7VM:~>
Can't find file
Matt@My-Win7VM:~>
--------------------------------------------------------------------

任何想法,它可以谈论的文件似乎无法找到..?
任何想法或建议将不胜感激。

先谢谢,
马特

2 个答案:

答案 0 :(得分:1)

好的我觉得我发现了问题。

我运行 env 命令, PS1 环境变量显示此

PS1=Can't find file \033]0;${PWD}\n\033[1;31m${USER}@${HOSTNAME}:\033[1;34m${PWD/${HOME}/\~}>\033[0m

因此,我将export PS1=${print ...}行从我的~/.bashrc文件中删除为双引号变量赋值,而不是使用print命令。

因为看起来print命令试图从“/ c / Windows / system32 / print”运行,如果你传递一个字符串,你可以看到错误显示:

$ which print
/c/Windows/system32/print

$ print "Hello World"
Can't find file Hello World

正如您所看到的,该print命令需要一个文件名,而不是一个字符串。因此,将其切换为如下所示的赋值语句,修复了错误:

export PS1="\033[1;31m${USER}@${HOSTNAME}:\033[1;34m${PWD/${HOME}/\~}>\033[0m "

现在一切都好了。

修改 进入新问题,当我切换dirs时,提示中的目录没有改变...发现我使用了错误的方法。所以我找到了PS1开关,现在这次更好了:

PS1="\033[1;31m\u@\h:\033[0m\033[1;34m\w>\033[0m "

-Matt

答案 1 :(得分:0)

您似乎已从$PS1

复制了/etc/profile

尝试$PS1中的/etc/bash.bashrc变量:

# Set a default prompt of: user@host, MSYSTEM variable, and current_directory
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n\$ '