首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cygwin中的readlink

cygwin中的readlink
EN

Stack Overflow用户
提问于 2012-09-29 02:46:46
回答 2查看 1.4K关注 0票数 2

我在每个脚本中都做了最基本的事情

代码语言:javascript
复制
  SCRIPT=`readlink -f ${0}`
  HOME=`dirname $SCRIPT`

在给定$0 = C:\Users\dir\file的情况下,readlink给了我/cygdrive/c/CURRENT_DIRECTORY/C:\Users\dir\file,这样下一个dirname就会生成糟糕的/cygdrive/c/Users/CURRENT_DIRECTORY/C:\Users\dir,而不是C:\Users\dir/cygdrive/c/Users/dir

应该是这样工作的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-29 03:50:44

似乎我已经找到了答案:我们应该将$0转换成cygwin格式,这样readlink就可以使用它了

代码语言:javascript
复制
ZERO=`cygpath ${0}`
SCRIPT=`readlink -f ${ZERO}`
票数 5
EN

Stack Overflow用户

发布于 2013-05-05 23:17:02

cygwin (Windows7)中的readlink快把我逼疯了。相同的代码可以工作,但不能工作,从一个时刻到另一个时刻,输入数据没有变化。大多数情况下,它现在(2013年5月)不起作用。它在2013年1月起作用了。

代码语言:javascript
复制
$ ln -s foo bar
$ perl -e 'print readlink("/cygdrive/C/bin/bar")'
foo

但是在运行的程序中尝试一下,它并不总是有效的。readlink(cygpath $file)在我第一次运行它时是有效的,但在立即重新运行该程序时,它不再能够读取相同的$file并返回undef。

我目前正在使用这个可怕的杂技。它是有效的,但我讨厌它:

代码语言:javascript
复制
if (-l $file) {
    my $real = readlink($file);
    if (!$real) {
         # KLUDGE FOR CYGWIN
         my $cmd = "perl -e 'print readlink(\"$file\")'";
         $real = `$cmd`;
         die "ERR: No link for link $file date=$fileDate" unless $real;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12645662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档