我运行的一些脚本位于另一台计算机上托管的 CIFS 文件系统上。我通过网络安装该文件系统并将脚本的远程位置添加到我的 $PATH 中。这在正常条件下效果很好。但是,如果远程计算机由于某种原因脱机或挂起,则可能会使使用命令行变得非常糟糕,因为每个选项卡完成或命令输入都会阻止在远程主机上查找程序。当 shell 启动时,打开新的终端窗口也会挂起。
在保持 $PATH 查找机制的实用性的同时,有什么好方法可以改善这个问题?
答案1
可能适合您的解决方法是在本地目录中创建一堆包装器脚本,并将其放入搜索路径而不是远程目录中。这不是万能药:每次远程目录的内容发生变化时,您都需要更新包装器。但这样,除非您正在执行该程序,否则无法访问远程文件。
您需要符号链接而不是包装脚本,因为完成有时会检查文件是否可执行,这意味着stat
对文件的调用。但所有包装器都可以是单个可执行文件的符号链接。
一劳永逸地创建一个本地目录和一个包含以下内容的
~/remote-scripts
可执行文件~/remote-scripts/.remote-wrapper
#!/bin/sh exec "/remote/path/bin/${0##*/}" "$@"
要更新
~/remote-scripts
,请运行以下代码片段:find ~/remote-scripts -type l -exec rm {} + for x in /remote/path/bin/*; do ln -s .remote-wrapper ~/remote-scripts/"${x##*/}"; done
放入
~/remote-scripts
你的PATH
.