当我们执行 iels
命令时,终端应用程序会ls
在我们的PATH
变量中搜索该命令。PATH
通常包含许多系统目录和一些用户特定目录。因此,可能首先在用户目录中搜索命令,如果未找到,则将在系统目录中查找。
是否可以添加远程路径(来自网络/互联网)PATH
?这样就可以从 192.168.1.100 或等效名称搜索和检索命令。
我想mycommand
在(让我称之为)命令服务器上定义,然后转到网络中的另一台机器并输入:
PATH = 192.168.1.100:PATH
mycommand
答案1
是否可以添加远程路径(来自网络/互联网)
PATH
?
不,不是直接的。ProperPATH
指定了文件层次结构中可用的目录。不过,有一种通用方法可以将远程文件(此处mycommand
)带入层次结构:
- 让服务器使用某些协议(例如 NFS)共享
mycommand
(或可能/可能包含某些目录树)。mycommand
- 在另一台机器上挂载相关共享,因此
mycommand
出现在它是文件层次结构就像本地文件一样。不要使用noexec
,您可以明确使用exec
(请参阅man 8 mount
)。但一般来说,某些协议/工具/解决方案可能不允许文件可执行。 - 在那里进行调整
PATH
:添加指向包含mycommand
该目录的路径名出现当地的。
笔记:
- 如果
mycommand
是二进制可执行文件,则可能由于架构或内核不匹配而无法工作。 - 所使用的任何路径名都
mycommand
将在本地解析。特别是 shebang(如果有)。 - 如果
mycommand
需要其他文件,它可能会使用本地文件;这可能不是您想要的。 - 如果
mycommand
要使用服务器上现有的其他文件(例如库),可能不容易获取它们。如果从服务器获取它们,可能不容易实际使用它们。对于库,我认为在某些情况下LD_LIBRARY_PATH
可以LD_PRELOAD
提供帮助(取决于可执行文件);研究这些。 - 网络问题可能会导致…问题(例子);即使是正常的延迟也可能变成问题。请注意,每当
PATH
检查相关目录时,您都可能会遇到问题,即使调用 以外的其他内容也可能发生这种情况mycommand
。 - 通常需要 root 权限才能挂载任何东西。有几种方法可以让普通用户挂载,它们需要 root 用户至少一次的帮助(例如编辑
/etc/fstab
、编辑/etc/sudoers
、安装保险丝)。
答案2
不。
仔细想想,PATH 假定了一个文件系统。一旦你开始在其中放入其他内容,你就不再拥有文件系统,需要制定访问资源的协议,而这并不是标准的。它还会大大减慢对通过该路径查看的任何脚本/命令的访问速度,甚至可能变得无法忍受。
一个解决方法可能是将暴露的网络资源移植到文件系统中。具体如何操作取决于协议和操作系统。