在不调用直接路径的情况下使bash脚本可执行
我正在尝试创建一个函数,自动将软链接插入/usr/bin。这将允许调用它的脚本更加用户友好 这就是我现在拥有的:在不调用直接路径的情况下使bash脚本可执行,bash,scripting,Bash,Scripting,我正在尝试创建一个函数,自动将软链接插入/usr/bin。这将允许调用它的脚本更加用户友好 这就是我现在拥有的: executeAnywhere(){ local scriptlocation="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" local scriptname=`basename $0` sudo ln -s $scriptlocation/$scriptname /usr/bin/$s
executeAnywhere(){
local scriptlocation="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
local scriptname=`basename $0`
sudo ln -s $scriptlocation/$scriptname /usr/bin/$scriptname
}
但是,我不知道这将如何在权限方面起作用:我是否需要以某种方式修改符号链接的权限?如果您使用的是根用户,那么您就不必担心权限问题。但是非root用户将无法建立到
/usr/bin/
目录的链接,因为在大多数系统中/usr/bin
将具有544
或755
权限
但通常在大多数安装中,
/usr/bin
即使对于管理员用户也不可写(root
)。因此,如果可以的话,最好使用/usr/local/bin
,因为它不会创建操作不允许的
错误。如果您使用的是根用户,那么您就不必担心权限问题。但是非root用户将无法建立到/usr/bin/
目录的链接,因为在大多数系统中/usr/bin
将具有544
或755
权限
但通常在大多数安装中,
/usr/bin
即使对于管理员用户也不可写(root
)。因此,如果您同意,最好使用/usr/local/bin
,因为它不会创建操作不允许的错误。符号链接没有权限。符号链接所在的目录具有权限(因此,除非您具有根权限,否则您可能无法将符号链接插入到/usr/bin
),并且符号链接的目标具有权限(因此,如果您希望所有人都能执行它,则目标必须是a+x
)
如果您只想让自己能够运行该脚本,请将其放入~/bin
并验证~/bin
是否在您的路径中(在大多数类似unix的发行版上都是这样)。符号链接没有权限。符号链接所在的目录具有权限(因此,除非您具有根权限,否则您可能无法将符号链接插入到/usr/bin
),并且符号链接的目标具有权限(因此,如果您希望所有人都能执行它,则目标必须是a+x
)
如果您只想让自己能够运行脚本,请将其放入~/bin
并验证~/bin
是否在您的路径中(在大多数类似unix的发行版上都是这样)。符号链接的权限不用于任何用途。我不明白这有什么帮助。它必须被至少一次路径,并且由具有sudo权限的人进行。还有,为什么不直接使用ln-s${BASH_SOURCE[0]}/usr/local/bin/${0###*/}
和。。。为什么在第二次local
声明中使用古老的语法back tics
,而在第一次local
声明中使用var=$(cmd)
清楚地知道“modern(1988+)”命令替换哈哈,祝你好运!如果它是供您自己使用的脚本,$HOME/bin
是放置它的常规位置-如果$HOME/bin
不在$PATH
中,请将它添加到$PATH
中。如果脚本用于更一般的用途,/usr/local/bin
是添加脚本的常规位置。不建议将其放入/usr/bin
中-这就是系统文件所在的位置。如果您使用的是Mac OS X 10.11.X(El Capitan),则无法在/usr/bin
中创建链接;它需要进入/usr/local/bin
或/opt
下的目录,但可能/usr/local/bin
。符号链接的权限不用于任何用途。我不明白这有什么帮助。它必须被至少一次路径,并且由具有sudo权限的人进行。还有,为什么不直接使用ln-s${BASH_SOURCE[0]}/usr/local/bin/${0###*/}
和。。。为什么在第二次local
声明中使用古老的语法back tics
,而在第一次local
声明中使用var=$(cmd)
清楚地知道“modern(1988+)”命令替换哈哈,祝你好运!如果它是供您自己使用的脚本,$HOME/bin
是放置它的常规位置-如果$HOME/bin
不在$PATH
中,请将它添加到$PATH
中。如果脚本用于更一般的用途,/usr/local/bin
是添加脚本的常规位置。不建议将其放入/usr/bin
中-这就是系统文件所在的位置。如果您使用的是Mac OS X 10.11.X(El Capitan),则无法在/usr/bin
中创建链接;它需要进入/usr/local/bin
或者可能在/opt
下的目录中,但是可能/usr/local/bin
。在/usr/bin
上使用544个权限会很奇怪-只有用户root
(如果bin
拥有/usr/bin
,则可能是用户bin
)将能够执行目录中的程序<代码>755
或555
有意义;任何人都可以访问这些程序,但只有具有适当特权的用户才能添加或删除程序。请强调,即使您可以写入/usr/bin
,您也不应该这样做。对系统进行任何本地修改时应使用的位置为/usr/local/bin
。尽管如此,我们还是对此投了赞成票。在/usr/bin
上使用544个权限将是偏心的-只有root用户才能执行目录中的程序(如果bin拥有/usr/bin
,则可能是userbin
)<代码>755
或555
有意义;任何人都可以访问这些程序,但只有具有适当特权的用户才能添加