v1h*_*1h5 8 command-line symbolic-link
我有很多经常使用的命令行工具。我使用普通方法遍历直到该命令通过终端的完整路径,然后执行./command-name但这是一项繁琐且耗时的任务。
研究“如何通过终端从任何地方执行命令”的主题,我最终找到了将路径包含在环境变量中的解决方案(通过编辑 ./bashrc)。
这工作正常。
我什至发现全局工作的所有命令(如 mkdir、ifconfig、cp 等)都放在“/bin”目录中。
在“/bin”目录中包含我的命令的“符号链接”后,一切正常,我可以从终端的任何地方执行命令。
我的问题
将符号链接直接放在 /bin 目录中是否安全。我问这个是因为在放置符号链接时,它要求我输入管理员密码。
与 /usr/bin 目录相比,如果我将命令的符号链接放在 /bin 中会产生什么不同吗?
环境(如果重要的话):
Ubuntu 13.10,32 位。
Mad*_*ike 13
不建议弄乱/bin
和使用/usr/bin
,尽管这会起作用,但它有点不安全。此外,您不需要将符号链接放在那里。
我遇到了和你提到的一样的问题。./myscript
每次都导航到脚本并调用它们很麻烦。这是我所做的。
您可以创建自己的 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 变量。