为什么这个符号链接创建了两个实例

2024-06-19

我有一个用于我的点文件的安装脚本。我用来创建一个目录到我的主文件夹的符号链接。这些链接执行得很好,但创建了第二个符号链接,我无法解释为什么。

项目中的文件夹结构如下所示

install.sh
scripts/
    shell.sh
shell/

install.sh calls shell.sh并调用命令

ln -s $SCRIPTS_DIR/shell/ $HOME/.shell

$SCRIPTS_DIR 是完整路径

所以我的主目录中确实有一个 .shell 目录链接得很好,但现在我的项目文件夹有一个额外的符号链接

install.sh
scripts/
    shell -> PATH_TO_PROJECT/shell
    shell.sh 
shell/

任何解释将不胜感激


想想当你运行时会发生什么ln -s当目标是目录而不是文件时,命令两次。

If $HOME/.shell不存在,那么

ln -s "$SCRIPTS_DIR/shell/" "$HOME/.shell"

...创建它。然而,如果它already存在,那么...

ln -s "$SCRIPTS_DIR/shell/" "$HOME/.shell"

...款待.shell作为目标目录名称,而不是要创建的目标的完整路径,并创建一个新条目within那个目录。


GNU ln有一些扩展可以修复此用法,包括:

-h 如果 target_file 或 target_dir 是符号链接,则不跟踪它。这对于 -f 选项最有用,用于替换可能指向目录的符号链接。

因此,如果在 GNU 系统上运行,您可以使用:

# quotes added for bash compatibility, since question is tagged for both shells
ln -sfh "$SCRIPTS_DIR/shell/" "$HOME/.shell"

否则,只需先检查:

[[ -e $HOME/.shell ]] || ln -s "$SCRIPTS_DIR/shell/" "$HOME/.shell"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个符号链接创建了两个实例 的相关文章

  • 为什么这个符号链接创建了两个实例

    我有一个用于我的点文件的安装脚本 我用来创建一个目录到我的主文件夹的符号链接 这些链接执行得很好 但创建了第二个符号链接 我无法解释为什么 项目中的文件夹结构如下所示 install sh scripts shell sh shell in
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • Bash 中单行 while 循环的语法

    我无法找到分号和 或大括号的正确组合 我想这样做 但作为命令行中的一句 while 1 do foo sleep 2 done while true do foo sleep 2 done 顺便说一句 如果您在命令提示符下将其输入为多行 如
  • 替换多个文件中的多个字符串

    我有一个包含正则表达式列表和替换文字字符串的文件 格式如下 OLD REGEXP 1 NEW STRING 1 OLD REGEXP 2 NEW STRING 2 我想替换所有匹配的字符串OLD REGEXP X with NEW STRI
  • 使用简单数据结构在 Bash 脚本中进行深度优先搜索

    我正在尝试按照上面所述进行操作 我相对容易地设计了广度优先搜索 该脚本的目标是创建用户输入的具有一定深度和广度的目录结构 我正在尝试改变广度优先实现以支持深度优先搜索 这是我得到的 depthsearch local open seed l
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 启动 OSX 时未使用 teamcity 代理运行 bash

    我有一个 shell 脚本startup sh执行以下操作 创建 RAM 磁盘并启动 teamcity 代理 bin bash DISK usr bin hdiutil attach nobrowse nomount ram 1677721
  • 仅当程序成功时如何重定向程序的输出?

    当我的程序之一返回非零退出代码时 我想避免重定向其输出 这可能吗 如果可以 我该怎么做 我失败的尝试 echo foo gt file false cat gt file 这导致file是空的 我想要的行为只是调整file当程序成功时 我还
  • 如何 cd 到 Mac OSX 终端中的别名目录

    有没有办法使用命令 cd 从 shell 进入别名目录 它总是返回 htdocs 不是目录 编辑 我使用操作系统 GUI 创建了快捷方式 gt 右键单击 htdocs 目录并选择 别名 我使用的是德语操作系统 如果它不是别名 也许它在英语中
  • 文件头中 shebang 的用法:是否有任何选项可以在 shebang 中传递多个参数

    我使用不同的命名空间来执行 python 文件 使用 shebang hashbang 来执行此脚本 bin bash c 面临的问题是 shebang 只接受一个参数 即使我传递多个参数 它也会将其视为单个字符串 舍邦使用 sbin ip
  • sed:替换文本块

    我有一堆文件 从一段代码开始 我试图用另一个代码块替换 Replace
  • 如何在 Linux Bash 中通过 SFTP 将数据传输到远程文件而不将数据存储在本地文件中?

    我需要能够通过 SFTP 将数据从内存传输到远程文件 我最初是通过 SSH 进行此操作的 在工作时发现我没有对远程位置的 SSH 访问权限 只有 SFTP 访问权限 下面是我的原始 SSH 代码的示例 echo secret data ss
  • $@ 中 args 的 bash 参数大小写

    我有一个带有一长串可选参数的脚本 有些具有相关的值 Such as script first 2012 12 25 last 2012 12 26 copy remove script first 2012 12 25 因此有以下案例陈述
  • OS X bash:目录名

    我想创建一个简单的 bash 脚本来在 OS X 上启动 Java 程序 文件名 文件路径和直接工作文件夹都包含空格 当我这样做时 bin sh cd dirname 0 I get usage dirname path 我也尝试过在各种不
  • zsh:当我尝试在 venv 中运行应用程序时,中止 python 错误

    我使用以下命令设置 Python 3 6pyenv这样我将来就可以管理多个Python版本 例如3 7和3 8 我没有使用 Homebrew 安装 Python 因为它改变了系统版本 这是我第一次使用zshshell 因为它是 Catali

随机推荐

  • 连接到 Facebook 并使用 api

    有没有好的教程如何制作简单的控制台 Facebook 应用程序 连接到 Facebook 并获取朋友列表 用户照片 状态或其他内容 我查看了 facebook SDK 的 facebook 示例 但如果我想在 facebook 上授权 我必
  • 如何在OpenGL ES中显示yuv格式的数据而不转换rgb?

    我一直在研究 iOS 的 OpenGL ES 我想知道YUV格式的数据是否可以在不转换RGB的情况下显示 大多数情况下 yuv 数据必须转换为 RGB 才能显示 但是 转换过程非常慢 然后 显示不流畅 所以 我想尝试在不转换为RGB的情况下
  • Apache Tika 能够提取中文、日语等外语吗?

    Apache Tika 能够提取中文 日语等外语吗 我有以下代码 Detector detector new DefaultDetector Parser parser new AutoDetectParser detector Input
  • 删除 WebView Android 中不需要的空白

    我已经开始使用 WebView 开发应用程序 实际上我正在使用 Webview 加载图像 我喜欢使用该类的内置缩放控件 我可以成功加载图像 但我可以看到一些令人恼火的空白 我找不到删除它的方法 我的图像尺寸为 750 1000 我在下面附上
  • Java CRC32:与 C# 中的 CRC 不同

    我必须将文件与 java 和 C 脚本提供的 CRC32 代码进行比较 当我用 java util zip CRC32 计算 CRC32 时 结果完全不同 我的猜测是 C 脚本的多项式 0x2033 与 zip CRC32 中使用的不一样
  • 在 Scala 中调用 WebSocket 中的方法

    我是 scala Play 框架和 Akka 的新手 我的函数定义为 def socket WebSocket accept String String request gt ActorFlow actorRef out gt MyWebS
  • 从后台恢复后,Flutter GoogleMap 为空白

    我遇到以下问题 我的 Flutter 应用程序使用 GoogleMap 地图最初加载得很好 但是 如果我将应用程序置于后台并稍后恢复 地图将保持空白 Google 徽标仍然显示 就像未指定 API 密钥时发生的情况一样 我的多边形叠加层也不
  • 从嵌套列表创建数组时抑制 Numpy 中的科学记数法

    我有一个嵌套的 Python 列表 如下所示 my list 3 74 5162 13683628846 64 12783387559 86 1 81 9 55 116 189688622 37 260332262 0 1 97 2 2 7
  • 将 EditText 设置为带有整数的货币

    全部 我有一个TextWatcher格式化一个EditText货币格式 private String current public void onTextChanged CharSequence s int start int before
  • Rhino 和 Spidermonkey JavaScript 引擎有什么区别?

    我第一次开始学习 Javascript 但是一开始我就坚持了两个可能的选择 Rhino 和 Spidermonkey 请您告诉我什么是一个 什么是另一个 以便我可以轻松地为自己选择适合我需要的最佳选择 如果这对您来说更容易 您可以列出两个
  • 如何在 Process.Start 上使用 Microsoft Fakes 程序集

    我想嘲笑系统 诊断 进程 启动调用 所以我为System集会 问题是Start是一个静态方法系统 诊断 过程所以我没有得到一个能够为 Start 方法挂钩委托的垫片 这样做的正确方法是什么 因此 首先您需要为 Process 类生成 Shi
  • 图像下方不需要的边距

    我有一个图像和一个 div 我想将其放置在其下方 这是小提琴 http jsfiddle net d3Mne 1 http jsfiddle net d3Mne 1 问题是两者之间存在差距 此下边距仅出现在图像中 有什么办法可以去除吗 Se
  • Excel 接受一些字符,而 OpenXml 有错误

    我有一个字符串 我想使用 C 中的 openxml 组件将其导出到 Excel 文件 我的文本有 u001f 字符 而 openxml 对此字符有错误 错误文本 十六进制值 0x1f 是无效字符 我将该测试直接复制到 Excel 中 没有问
  • 部分预处理 C 或 C++ 源文件?

    有没有办法部分预处理C或者C 源文件 我所说的 部分预处理 是指扩展一些但不是全部的 include 指令 例如 我想扩展 includes 指向我的项目标头 但不扩展 includes 指向其他库的标头 我尝试通过运行来做到这一点gcc
  • Electron webContentsexecuteJavaScript:无法在 loadURL 上第二个执行脚本

    我正在测试 Electron 特别是使用executeJavaScript 我的项目使用 POST 请求登录网站 然后执行一些工作并使用同一会话加载第二个 URL 在第二个 URL 中 我需要执行 JS 但我不确定我做错了什么 在此示例中
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • 在哪里实现 Swift 协议?

    在 Swift 中实现协议一致性时 我有两个选择 具有相同的最终结果 在类中实现协议 也就是说 在类定义的顶部声明一致性 并将实现放在类体内 或者 在扩展中实现协议 也就是说 完全在类之外编写符合协议的代码 这是一个例子 public cl
  • 如何定义与更高类型类型(类型构造函数)绑定的上下文

    我尝试过以下方法 def test Option T Ordering value1 Option T value2 Option T val e implicitly Ordering Option T compare value1 va
  • 在 Delphi 中的 SOAP 标头中发送简单字符串

    我需要发送这样的东西
  • 为什么这个符号链接创建了两个实例

    我有一个用于我的点文件的安装脚本 我用来创建一个目录到我的主文件夹的符号链接 这些链接执行得很好 但创建了第二个符号链接 我无法解释为什么 项目中的文件夹结构如下所示 install sh scripts shell sh shell in