Git Bash shell 无法创建符号链接

2024-01-10

当我尝试从以下位置创建符号链接时Git Bash https://superuser.com/questions/1053633/what-is-git-bash-for-windows-anywayshell,每次都失败:

ln -s /c/Users/bzisad0/Work testlink

Output:

ln: creating symbolic link `testlink' to `/c/Users/bzisad0/Work': Permission denied

除了给出错误消息之外,它唯一做的就是创建一个名为(在本例中)的空目录testlink.

我没有看到任何问题ln可执行的。例如,它归我所有并标记为可执行文件:

which ln
ls -hal /bin/ln

Output:

/bin/ln

-rwxr-xr-x    1 BZISAD0  Administ      71k Sep  5 11:55 /bin/ln

我也拥有当前目录(~,即/c/Users/bzisad0):

ls -dhal .

Output:

drwxr-xr-x  115 BZISAD0  Administ      40k Sep  5 12:23 .

我拥有管理权限,并且尝试使用“以管理员身份运行”打开 Git Bash shell,但这没有什么区别。

我尝试打开 Windows 属性ln.exe并将权限级别设置为“以管理员身份运行此程序”,但这没有帮助。

我已经进入SecurityAdvancedWindows 中的属性并使我自己(而不是管理员组)成为所有者,但这也不能解决任何问题。

我不知所措。我不知道这个错误信息最终是否来自ln、来自 Bash 或 Windows,否则我怎么可能缺少权限。我怎样才能弄清这件事的真相呢?


尽管非常尴尬,但可以在以下位置创建符号链接:MSysGit https://github.com/msysgit/.

首先,我们需要确保我们使用的是 Windows。这是一个用于检查的示例函数:

windows() { [[ -n "$WINDIR" ]]; }

现在,我们做不到cmd /C,因为 MSysGit 会与这个论点通奸并将其变成C:。另外,不要试图使用/K;它只有在你没有的情况下才有效K: drive.

因此,虽然它将在程序参数上替换该值,但不会在此处文档上替换。我们可以利用这一点来发挥我们的优势:

if windows; then
    cmd <<< "mklink /D \"${link%/}\" \"${target%/}\"" > /dev/null
else
    ln -s "$target" "$link"
fi

另:请注意,我包括了/D因为我只对目录符号链接感兴趣; Windows 就有这样的区别。通过大量的努力,你可以写一个ln() { ... }包装 Windows API 并作为完整的嵌入式解决方案的函数,但这...留给读者作为练习。


作为对接受答案的感谢,这里有一个更全面的功能。

# We still need this.
windows() { [[ -n "$WINDIR" ]]; }

# Cross-platform symlink function. With one parameter, it will check
# whether the parameter is a symlink. With two parameters, it will create
# a symlink to a file or directory, with syntax: link $linkname $target
link() {
    if [[ -z "$2" ]]; then
        # Link-checking mode.
        if windows; then
            fsutil reparsepoint query "$1" > /dev/null
        else
            [[ -h "$1" ]]
        fi
    else
        # Link-creation mode.
        if windows; then
            # Windows needs to be told if it's a directory or not. Infer that.
            # Also: note that we convert `/` to `\`. In this case it's necessary.
            if [[ -d "$2" ]]; then
                cmd <<< "mklink /D \"$1\" \"${2//\//\\}\"" > /dev/null
            else
                cmd <<< "mklink \"$1\" \"${2//\//\\}\"" > /dev/null
            fi
        else
            # You know what? I think ln's parameters are backwards.
            ln -s "$2" "$1"
        fi
    fi
}

另请注意以下几点:

  1. 我刚刚写了这个并对其进行了简短的测试Windows 7的 https://en.wikipedia.org/wiki/Windows_7 and Ubuntu https://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29,如果您来自 2015 年并使用 Windows 9,请先尝试一下。
  2. NTFS https://en.wikipedia.org/wiki/NTFS有重解析点和连接点。我选择重新分析点,因为它更多的是一个实际的符号链接,适用于文件或目录,但连接点的好处是成为一个可用的解决方案Windows XP https://en.wikipedia.org/wiki/Windows_XP,但它仅适用于目录。
  3. 一些文件系统,FAT https://en.wikipedia.org/wiki/File_Allocation_Table特别是,不支持符号链接。现代 Windows 版本不再支持从它们启动,但 Windows 和 Linux 可以挂载它们。

奖励功能:删除链接。

# Remove a link, cross-platform.
rmlink() {
    if windows; then
        # Again, Windows needs to be told if it's a file or directory.
        if [[ -d "$1" ]]; then
            rmdir "$1";
        else
            rm "$1"
        fi
    else
        rm "$1"
    fi
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git Bash shell 无法创建符号链接 的相关文章

  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 在 Windows 上查找父进程 ID

    Problem 给定远程 Windows 主机上的进程 ID 和命令行访问权限 如何找到其父进程的 PID Solution 鉴于 Marc B 的回答 我们可以使用 WMIC 命令示例here https learn microsoft
  • 从其可执行文件的路径获取服务名称

    我有一个可执行文件的路径 它是一个正在运行的服务应用程序 例如 C Program Files x86 Someapp somesvc exe 我想停止并启动它 为此我想我需要获取服务的名称 如下所示 this https stackove
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • MSysGit 与 Windows 版 Git

    我无法确定MSysGit 和 Windows 版 Git 之间的区别 http msysgit github com 它们有何不同 为什么我会选择其中之一而不是另一个 它们不是同一个东西吗 On http msysgit github co
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Docker 警告:无法从守护进程获取默认注册表端点

    在 Windows 10 上 当我调用 docker 命令时 docker pull mongo windowsservercore 我得到以下输出 Warning failed to get default registry endpoi
  • 批处理文件:FOR 循环中的 GOTO

    我有一个带有 FOR 循环的批处理文件 在循环中 我必须等待进程结束 为此我使用了 IF 和 GOTO 问题是 GOTO 打破了循环 我尝试寻找其他解决方案 但没有找到任何东西 如何做呢 echo off for f tokens a in
  • Chrome 扩展 - 消息传递到批处理文件

    我使用了示例项目https developer chrome com extensions samples https developer chrome com extensions samples我能够运行 python 本机应用程序 有
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc

随机推荐

  • L5 随机 TokenMismatchException

    我在 Laravel 5 中收到随机 TokenMismatchExceptions 在tokensMatch 我一直在尝试调试这个奇怪的问题 Log debug request gt session gt token token 输出如下
  • 对于知识库中不存在的问题,在网络聊天中出现“无法发送重试”错误

    我用 C 使用 Azure 创建了一个机器人 该机器人对于我的知识库中存在的问题运行良好 但是当我尝试不同的问题时 它给出了错误couldn t send retry在该问题下方并回复该问题Sorry my bot code is havi
  • 如何将 JSON 数据映射到类

    我创建了一个 ES6 类Babel https github com babel babel我想将从服务器获取的 JSON 数据映射到 ES6 类 有什么通用的方法可以做到这一点吗 User js export default class
  • 将每个整数转换为简单的 ASCII 图表

    我有一个包含一堆整数的文件 如下所示 6 2 3 4 3 目标是像视频游戏一样转换统计数据中的这些整数 例如 如果数字是 6 则统计数据必须是 如果数字是 4 结果一定是 我尝试了以下代码 但它不起作用 Here I put all the
  • 使用多个 SASS 文件

    我想将我的 巨大的 全局 css 文件分成多个文件 我用的是萨斯有没有一种简单的方法让 sass 观看多个文件 我想我可以使用 import 但只是想知道是否有另一种 更好 的方法 提前致谢 What 里奇 布拉德肖提到的是正确的 但是这是
  • 检测泛型类型是否开放?

    我的程序集中有一堆常规的 封闭的和开放的类型 我有一个查询 我试图从中排除开放类型 class Foo a regular type class Bar
  • 使用数据绑定设置 ImageView 的色调

    我使用数据绑定来设置我的色调ImageView 这运作良好 android tint plantEntity isFavorite color favorite color favorite none gt 问题是android tint已
  • 如何处理 Pandas Dataframe 中的重复条目?

    我有一个包含以下条目的 df ID FIRST NAME FIRST SUBJECT SECOND SUBJECT A2035559 Sometsdf Science A2035559 Sometsdf ENGINEERING A20340
  • 使用数据帧减去字典中列表的值

    我下面有一个数据框 其中包含用户购买的产品 数据集 user age maritalstatus product A Young married 111 B young married 222 C young Single 111 D ol
  • exec() 命令不起作用

    我正在使用 exec 函数在 centos 服务器上运行我的命令 一切正常 直到我使用命令 命令 ffmpeg i 输入视频 mp4 vf fade out 0 5 输出 mp4 该命令正常 因为它通过命令行在服务器上运行 但是当我使用 p
  • Three.js 合并网格但保留单独的材质

    我正在开发一个基于网络服务器的可视化项目 我让它工作并查看我想要的方式 但它比我希望的要慢得多 基本上 它有一个巨大的网格来建模空间 然后各个立方体以不同的颜色显示在网格中 或者如果那里没有任何东西 则当前将其删除 但可以轻松地使用透明材料
  • Rails 4.0.0 - “没有将 nil 隐式转换为字符串”

    刚刚安装了一个全新的 Rails 4 0 0 应用程序 我收到此错误 https gist github com hartator 6404820 https gist github com hartator 6404820 on http
  • 转换 Html 并将文本设置为 Textview

    我正在尝试转换 html 字符串并将其设置为 TextView 但我无法准确执行此操作 这是我的字符串 您好 1 s 您有 2 d条新消息 我在用textview setText Html fromHtml myString 这会生成带有
  • Windows下如何知道复制是否完成?

    我正在编写一个监听位置的工具 最好是远程位置 如果创建了新的文件夹或文件 它会将其下载到本地位置 目前我正在监听远程文件夹FileSystemWatcher 当创建新文件夹 文件时 我启动一个计时器 如果计时器达到 X 分钟 它就会开始将其
  • UIAlertcontroller 作为 Swift 中的操作

    所以我希望弹出一个警报 告诉我一条消息 然后我希望它等待我 直到我按 确定 然后它将继续执行该功能 例如 IBAction Alert let alertController UIAlertController title title me
  • 在 Windows 上托管闪亮的应用程序

    首先我的问题与 如何在 Windows 服务器上托管 Shiny 应用程序 https stackoverflow com questions 46848995 how to host shiny apps on windows serve
  • nslog时间戳

    我想记录设备运动时间戳属性 设备运动位于 CMMotionManager devicemotion timestamp 类中 有任何想法吗 这是我提出的解决方案 因为日期是根据 Apple 文档确定的 时间戳是自电话启动以来的时间量 以秒为
  • 禁用文本选择 UITextView

    我想禁用 UITextView 上的文本选择 到现在为止我所拥有的 已经完成的是 BOOL canPerformAction SEL action withSender id sender UIMenuController sharedMe
  • 错误:boost/scoped_ptr.hpp:使用 libkml 时没有此类文件或目录

    我正在开发一个使用谷歌地图数据库的软件 我搜索了 google 发现一个 C 库可以做到这一点 libkml 我已经下载了一些示例代码website http code google com p libkml source browse t
  • Git Bash shell 无法创建符号链接

    当我尝试从以下位置创建符号链接时Git Bash https superuser com questions 1053633 what is git bash for windows anywayshell 每次都失败 ln s c Use