【发布时间】:2011-08-27 12:06:59
【问题描述】:
我在服务器 A 上管理大量的 shell (ksh) 脚本。每个脚本都以该行开头...
#!/usr/bin/ksh
当我部署到机器 B、C 和 D 时,我经常需要使用不同的 shell,例如 /bin/ksh、/usr/local/bin/ksh 甚至 /usr/dt/bin/ksh。假设我无法安装新版本的 ksh,并且无法在任何受保护的目录(例如 /usr/local/bin)中创建链接。目前我有一个修改所有脚本的 sed 脚本,但我不想这样做。我想标准化标头,以便不再需要从服务器更改为服务器。我不介意使用类似的东西
#!~/ksh
并在每台服务器上创建一个链接,但过去在使用 rsh(可能是 ssh)调用脚本(我认为特别是 AIX)时,我在使用“~”查找主页时遇到了问题。另一种选择可能是在我的主目录中创建一个链接并确保它位于我的 PATH 中的第一个,并且只需使用
#!ksh
寻找一个好的解决方案。谢谢。
2011 年 8 月 26 日更新 - 这是我想出的解决方案。安装脚本查找服务器上安装的各种版本的 ksh,然后将其中一个 ksh 93 程序复制到 /tmp/ksh93。框架中的脚本都引用了#!/tmp/ksh93,它们不需要从一台服务器更改到另一台服务器。该脚本还设置了一些变量,以便如果文件每次都从 /tmp 中删除,它将在下次计划任务运行时立即放回,至少每分钟一次。
【问题讨论】:
-
在
/tmp中放置任何永久的东西是...非常不正统的,更不用说容易失败,除非您安排在重新启动时重新创建文件。
标签: shell