如何我的计算机上没有重复的自定义 bash 脚本目录并将其添加为 PATH 选取的链接?



我的MBP机器上有一个/.cust_dev_cmds/目录,它是父系统管理员工作目录的一部分,该目录在此处使用git存储库。我希望能够:

  1. 不必在我的.bash_profile中使用 for 循环来获取所有 *.sh 文件。
  2. 将目录添加到 PATH 中,并在.bash_profile中导出行。
# from my .bash_profile
export PATH="/Users/<my-usr-name>/Public/sharable-dev-scripts:$PATH"

这确实显示了一个echo $PATH但是当我尝试从我创建的脚本中调用一个函数时,该函数直接在循环中的.bash_profile内进行采购(如上面的 #1 点(,如下所示

# create a directory with a builtin command
mkdir test-dir
# use one of my custom ones to create a simple readme.md within that directory:
mkr !!:1
# I am getting >>> mkr: command not found
  1. 使用任何类型的链接,以免在计算机上具有重复的目录结构。
    • 在不使用 10 美元单词的情况下阅读任何好的解释都会很棒。
  2. 定义一种方法来测试链接是否有效并通过 PATH 工作。像 declare -F 这样的东西可以用来看到目录中的脚本实际上正在成为 shell 中可调用函数的一部分,这也很好。
    • 有没有人知道这样做的命令?
  3. 对于共享网络目录,这更上一层楼。我已通过 Apple> 系统偏好设置>共享创建了一个共享目录,并打开了在公共文件夹中共享此目录的功能。
    • 有没有一个教程可以用像 VirtualBox 和从 MBP 共享目录访问命令的 Ubuntu 来宾来概述这一点?

我已经意识到了#1点,所以实际上问题以#2开头,所以没有人会建议第一个。我已经阅读了一些链接,但是我遇到的大多数描述它们的文章都很难理解 - 尤其是当希望将此功能添加到PATH时。我相信答案可能围绕着如何跟踪链接,但最好备份并首先挖掘链接 - 然后在没有链接的情况下适当地导出我的目录,并最终获得这种情况的正确解决方案。

在我自己尝试一些技巧之前,关于链接的最后一个想法是我只需要添加一个指向公共目录的链接,并以某种方式放置一个标志来查看/Public 中的所有目录,还是最好一直向下钻取到/Public/shared-directory/.cust_dev_cmds?任何方向将不胜感激。我的目标是能够为各种任务提供一些自定义命令目录,并最终跨网络/实例拥有它们。

当你想要你写在文件中的所有函数时 /.cust_dev_cmds/ ,通常的方法是获取所有文件。
当您想避免循环时,可以使用

utildir="$HOME/.cust_dev_cmds/" # I think the path is relative to your home).
source <(cat ${utildir}/*)

当您希望使用 PATH 找到函数时,您应该为每个函数创建一个文件。

以前:

# cat talk
ask() { echo "How are you?"; }
answer() { echo "Fine, thank you"; }

后:

# cat ask
echo "How are you?"
# cat answer
echo "Fine, thank you"

当您希望所有用户都使用同一组函数时,请考虑一个获取所有脚本的主脚本(主文件可以使用用户=依赖设置,如 HOME 或 VERSION(:

# cat /Public/shared-directory/setup_functions
utildir="$HOME/.cust_dev_cmds/" # I think the path is relative to your home).
source <(cat ${utildir}/*)
source some_other_file

现在,每个用户只需要获取一个文件。

最新更新