将符号链接放在 /bin 目录中是否安全?

v1h*_*1h5 8 command-line symbolic-link

我有很多经常使用的命令行工具。我使用普通方法遍历直到该命令通过终端的完整路径,然后执行./command-name但这是一项繁琐且耗时的任务。

研究“如何通过终端从任何地方执行命令”的主题,我最终找到了将路径包含在环境变量中的解决方案(通过编辑 ./bashrc)。

这工作正常。

我什至发现全局工作的所有命令(如 mkdir、ifconfig、cp 等)都放在“/bin”目录中。

在“/bin”目录中包含我的命令的“符号链接”后,一切正常,我可以从终端的任何地方执行命令。

我的问题

  1. 将符号链接直接放在 /bin 目录中是否安全。我问这个是因为在放置符号链接时,它要求我输入管理员密码。

  2. 与 /usr/bin 目录相比,如果我将命令的符号链接放在 /bin 中会产生什么不同吗?

环境(如果重要的话):

Ubuntu 13.10,32 位。

Mad*_*ike 13

不建议弄乱/bin和使用/usr/bin,尽管这会起作用,但它有点不安全。此外,您不需要将符号链接放在那里。

我遇到了和你提到的一样的问题。./myscript每次都导航到脚本并调用它们很麻烦。这是我所做的。

定义自己的 bin 目录

您可以创建自己的 bin 目录并将脚本放在那里。创建它

mkdir ~/bin
Run Code Online (Sandbox Code Playgroud)

现在您需要篡改 PATH 环境变量。这是一个敏感区域。如果您弄乱了 PATH 变量,您将无法再使用相对路径执行命令。如果发生这种情况ls可能不再起作用,/bin/ls仍然会起作用。

我现在要展示的内容只会影响当前正在运行的终端会话。因此,如果出现任何问题,您只需使用Ctrl+注销D,一切都和以前一样。

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
export PATH=$PATH:~/bin
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/madmike/bin
Run Code Online (Sandbox Code Playgroud)

echo-command显示什么是在$ PATH之前和之后。export允许您更改环境变量。您的附加 bin 目录附加到变量的末尾。这意味着如果有多个同名命令,您的命令的优先级最低。这很好,因为您不想覆盖基本的系统命令。

要使更改永久化,请编辑您的 ~/.bashrc 文件。

nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

添加export PATH=$PATH:~/bin到该文件的末尾。

现在每个新的终端会话都将使用您的目录扩展 $PATH 变量。

  • 只是一个观察:默认情况下,即使尚未创建 `~/bin`,在 Ubuntu 中,`~/bin` 已经添加到 $PATH 中。你可以检查 `~/.profile` 文件来查看。 (8认同)