1

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

我添加到文件中的唯一内容是一些别名 cmd、一个导出 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:~>
--------------------------------------------------------------------

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

提前致谢,
马特

4

2 回答 2

2

好的,我想我找到了问题所在。

我运行了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

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

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

现在一切似乎都很好。

编辑: 遇到新问题,当我切换目录时提示中的目录没有改变......发现我使用了错误的方法。所以我找到了 PS1 开关,现在一切都好了:

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

-马特

于 2015-06-03T19:29:45.030 回答
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\$ '
于 2015-09-18T02:07:46.850 回答