“source”(.)作为shell命令的目的是什么?
发布时间:2020-12-15 18:35:46 所属栏目:安全 来源:网络整理
导读:这两个命令有什么区别? . filename # (A) 和 filename # (B) 这个命令如何相关? ./filename # (C) 注意:#和其后的行是注释. 命令(A)被称为源包含shell命令的文件.它可能不用于二进制可执行文件(有关如何确定文件类型的信息,请参阅man文件).它会导致文件中
这两个命令有什么区别?
. filename # (A) 和 filename # (B) 这个命令如何相关? ./filename # (C) 注意:#和其后的行是注释.
命令(A)被称为源包含shell命令的文件.它可能不用于二进制可执行文件(有关如何确定文件类型的信息,请参阅man文件).它会导致文件中的命令在当前环境中执行,就像在shell提示符下键入它们一样.结果会影响当前环境,因此可以执行诸如设置环境变量的值和更改目录,添加函数定义等操作.没有必要使用chmod设置执行位.该文件需要位于当前目录中,或者必须包含完整或相对路径*,或者文件可以位于PATH环境变量中的位置(取决于是否设置了shopt的sourcepath选项).如果该文件所在的位置,则无需指定当前目录.这些都是等价的:
$ls filename $. filename results $ls /some/directory/filename /some/directory/filename $. /some/directory/filename results $cd /elsewhere $echo $PATH /some/directory $. filename results 命令(B)仅在执行位为用户权限时才会执行该文件(请参阅man chmod).该文件可以是shell脚本,二进制可执行文件或其他脚本,如Perl或Python(或在不同的shell中编写).如果名称中没有斜杠(未指定目录),则该文件必须位于PATH环境变量中包含的目录中.可以在路径中包含当前目录,但我不推荐它,因为它存在安全风险.这些是等价的: $echo $PATH /some/directory $filename results $/some/directory/filename results 命令(C)与命令(B)基本相同,但它指定了当前目录,称为“.”. (正如父目录被称为“..”.由于指定了目录,因此不会搜索PATH以找到该文件. [*]相对路径是不以斜杠(/)开头的路径.它指定相对于当前目录的位置. “this / is / a / subdir”作为当前目录路径存在,与“./this/is/a/subdir”(指定同一目录)一样. “../another/set/of/dirs”是当前父目录下面的一组目录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |