Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不调用直接路径的情况下使bash脚本可执行_Bash_Scripting - Fatal编程技术网

在不调用直接路径的情况下使bash脚本可执行

在不调用直接路径的情况下使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

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

这就是我现在拥有的:

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
,则可能是user
bin
)<代码>755
555
有意义;任何人都可以访问这些程序,但只有具有适当特权的用户才能添加