在windows应用程序中从cygwin home打开文件

在windows应用程序中从cygwin home打开文件,cygwin,Cygwin,我记得当我第一次安装cygwin时,我可以使用Windows应用程序打开主目录中的文件。例如,我在Windows中安装了Emacs,我只需执行runemacs~/some_file.txt。我已经用完了空间,不得不将我的cygwin安装移动到另一个驱动器。从那以后,我似乎把我的安装搞砸了,我再也不能像这样使用Windows应用程序了 我已经完全删除了cygwin,并像以前一样在C:\cygwin中重新安装了它,但问题仍然存在 我看到由于某种原因,~被扩展为C:\home\Tudor,而不是C:\

我记得当我第一次安装cygwin时,我可以使用Windows应用程序打开主目录中的文件。例如,我在Windows中安装了Emacs,我只需执行
runemacs~/some_file.txt
。我已经用完了空间,不得不将我的cygwin安装移动到另一个驱动器。从那以后,我似乎把我的安装搞砸了,我再也不能像这样使用Windows应用程序了

我已经完全删除了cygwin,并像以前一样在C:\cygwin中重新安装了它,但问题仍然存在

我看到由于某种原因,
~
被扩展为
C:\home\Tudor
,而不是
C:\cygwin\home\Tudor


有人知道我如何让它再次工作吗?

非Cygwin Windows应用程序不知道您的Cygwin根目录或主目录

Emacs是一个特例。它最初是在UNIX上开发的,在某些方面使用了类似UNIX的语法

根据您最近的评论,Emacs将
~
扩展为
C:\Users\Tudor
。那是你的Windows主目录,不是你的Cygwin主目录

您还可以安装Cygwin版本的Emacs,与任何Cygwin应用程序一样,它将扩展到Cygwin主目录

如果从Cygwin shell调用Windows应用程序,则shell(而不是Windows应用程序)将扩展到Cygwin主目录,以Cgywin语法表示。例如,假设
runemacs
是非Cygwin应用程序,如果我运行:

bash$ runemacs ~
然后shell展开
~
,因此它相当于(假设我的用户名是
Tudor
):

runemacs
可能会将
/home/Tudor
视为等同于
\home\Tudor
,如果当前驱动器为
C:
,则等同于
C:\home\Tudor


如果在Emacs中键入Ctrl-X Ctrl-F打开文件,Emacs将根据内部遵循的任何规则解释
~
;这些规则不太可能识别Cygwin,除非您运行的是Cygwin版本的Emacs或Emacs本身有一些特殊的案例代码来处理Cygwin路径。

这很奇怪,我不希望在非Cygwin应用程序中使用时,
~
引用您的主目录(尽管我自己从未尝试过)。只有Cygwin知道如何扩展
~
,而普通Windows应用程序不知道Cygwin。你确定你的Emacs不是Cygwin应用程序吗?如果没有其他内容,您可能可以设置Windows环境变量并引用
%H%/some_file.txt
。如果我只是在Windows中打开Emacs并从那里打开
~
,那么它将带我到
C:\Users\Tudor
。我猜Cygwin中
~
的扩展是在Emacs启动之前完成的。Emacs肯定是一个特例。如果我在Windows中打开它,它将扩展到我的Windows主页。如果我在Cygwin中打开它,
~
将扩展到我的Cygwin主页。在Cygwin中打开意味着从Cygwin shell而不是Cygwin Emacs版本启动windows应用程序。我仍然认为Cygwin可能会在作为参数传递给windows应用程序的文件路径中展开
~
,这是一个配置问题(就像过去一样)。@Tudor:如果从Cygwin bash shell运行命令,shell将展开
~
,到Cygwin主目录的Cygwin样式路径。Windows应用程序可能会错误地解释该路径。请参阅我的最新答案。
bash$ runemacs /home/Tudor