使bash脚本可执行而无需调用直接路径

时间:2016-05-16 15:47:54

标签: bash scripting

我正在尝试创建一个自动将软链接插入/ usr / bin的函数。这将允许它所调用的脚本更加用户友好。

这就是我现在所拥有的:

executeAnywhere(){
    local scriptlocation="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    local scriptname=`basename $0`
    sudo ln -s $scriptlocation/$scriptname /usr/bin/$scriptname
}

但是,我不知道这将如何以权限方式工作:我是否需要以某种方式修改符号链接的权限?

2 个答案:

答案 0 :(得分:2)

如果您使用 root用户,则无需担心权限。但是,非root用户将无法与/usr/bin/目录建立此链接,因为在大多数系统中/usr/bin将具有544755权限。

但通常在大多数安装中/usr/bin 即使对于管理员用户也也不可写(root)。因此,put the link/usr/local/bin最好是可以的,因为它不会产生Operation not permitted错误。

答案 1 :(得分:0)

符号链接没有权限。符号链接所在的目录具有权限(因此您可能无法将符号链接插入/usr/bin,除非您具有root权限),并且符号链接的目标具有权限(因此目标需要为a+x如果你希望每个人都能够执行它。)

如果您只想让自己能够运行脚本,请将其放入~/bin并验证~/bin是否在您的路径中(它最常见) unix-like发行版。)