我最近开始将所有点文件放入 VCS 中,为了完整的组织,我想到创建一个个人“ ”文件夹,就像主文件夹中的一个文件夹一样,每当在 PATH 中查找命令时,该文件夹就会与该目录usr
“合并”usr
甚至手册页。现在回答问题:
- 有什么理由我不应该正在做这个?有没有我没有看到的缺点,或者更好的选择?
- 如果没有任何缺点,如何实现这一目标?
我已经知道了这个问题,但据我了解,最上面的答案建议了一个实际上将文件放入 中的选项/usr
,虽然我更喜欢类似于将文件夹添加到 中的方法PATH
,但它实际上并不移动任何文件,只是在不同的位置查找它们。
我还研究了overlayfs,但它看起来像是在启动时运行的。虽然它可能会更快,但我更希望在登录时合并我的文件。
答案1
做一次:
cd
mkdir -p usr/bin usr/man
添加到您的~/.profile
或其他 shell 初始化文件中:
PATH="$PATH:~/usr/bin"
MANPATH="$MANPATH:~/usr/man"
...然后将内容放入这些目录中。
笔记:
PATH 是从左到右搜索的。如果您开发了一个名为 的程序
robot
,那么顺序可能并不重要。如果您开发了一个名为 的程序cat
,并且您想运行它而不是/bin/cat
,那么您需要将in放在~/usr/bin
前面;例如,通过/bin
$PATH
PATH="~/usr/bin:$PATH"
请注意,这可能会带来安全风险。如果您这样做,并且攻击者可以获得对您的主目录的写入权限,他就可以在您的目录中留下特洛伊木马
~/usr/bin
并接管您的帐户。- 如果您想变得更奇特,您可以查看 的当前值
$PATH
并将其放在~/usr/bin
中间的某个位置。这可能更难维护。 - 虽然上述内容没有什么严重的错误,但您可能更愿意使用
~/bin
而不是~/usr/bin
.事实上,根据您拥有的系统,您可能会发现~/bin
(aka$HOME/bin
) 已经$PATH
默认存在。
答案2
这就是整个/usr/local
结构的用途。/usr
旨在由系统包管理器管理,但/usr/local
系统管理员可以添加自定义内容的地方除外。
甚至很可能/usr/local/bin
已经存在了PATH
。