我有一个由第三方提供的全局NPM包,用于生成报告并将其发送到服务器。
in_report generate -date 20221211
并且我想让一组用户能够检查报表是否生成,以防止重复。因此,我想在执行in_report
命令之前运行一个sh
脚本。
sh check.sh && in_report generate -date 20221211
但问题是我不想改变他们如何生成报告的命令。我可以在他们的PC上做一个补丁(能够改变env路径等)。
是否可以通过运行in_report generate -date 20221211
来运行sh check.sh && in_report generate -date 20221211
?
2条答案
按热度按时间bvjveswy1#
如果此“in_report”仅用于此目的,则可以通过在需要运行in_report的用户所使用的“.bashrc”或“.bash_aliases”文件的末尾放置以下行来创建别名:
alias in_report='sh check.sh && in_report'
有关详细信息,请参阅https://doc.ubuntu-fr.org/alias。
如果in_report也要以其他方式使用,这不是解决方案。在这种情况下,如果参数上的特定条件集匹配,您可能需要在www.example.com中直接调用它check.sh。为此,请执行以下操作:
alias in_report='sh check.sh'
www.example.com的内容check.sh:
这当然不是理想的,但是应该可以用,但是到目前为止最简单和最可靠的解决方案是忽略别名的问题,告诉那些使用in_report的人运行你的check.sh(使用与他们运行in_report时相同的参数),然后你可以直接调用in_report而不是/full/path/to/the/actual/in_report。
抱歉,我不是很清楚。如果是这样的话,请随便问。
nzrxty8p2#
在大多数现代Linux发行版上,最简单的方法是放置一个shell脚本,该脚本在
/etc/profile.d
中定义一个函数,例如,/etc/profile.d/my_report
的内容为这样,当用户登录时,它会自动放置在用户环境中。
/path/to
非常重要,因此函数不会递归调用自身。粗略浏览一下Mac的doco,你可能想分别编辑
/etc/bashrc
或/etc/zshrc
。