我在每个脚本中都做了最基本的事情
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
应该是这样工作的吗?
发布于 2012-09-29 03:50:44
似乎我已经找到了答案:我们应该将$0转换成cygwin格式,这样readlink就可以使用它了
ZERO=`cygpath ${0}`
SCRIPT=`readlink -f ${ZERO}`发布于 2013-05-05 23:17:02
cygwin (Windows7)中的readlink快把我逼疯了。相同的代码可以工作,但不能工作,从一个时刻到另一个时刻,输入数据没有变化。大多数情况下,它现在(2013年5月)不起作用。它在2013年1月起作用了。
$ ln -s foo bar
$ perl -e 'print readlink("/cygdrive/C/bin/bar")'
foo但是在运行的程序中尝试一下,它并不总是有效的。readlink(cygpath $file)在我第一次运行它时是有效的,但在立即重新运行该程序时,它不再能够读取相同的$file并返回undef。
我目前正在使用这个可怕的杂技。它是有效的,但我讨厌它:
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;https://stackoverflow.com/questions/12645662
复制相似问题