如何在启动urxvt终端时运行同脚本中定义的函数?
解决方案
你可以通过将函数定义直接传递给子Shell的方式实现,无需拆分文件。具体命令如下:
urxvt -e bash -c "$(declare -f fopen); fopen"
原理说明
declare -f fopen会输出fopen函数的完整定义代码- 将函数定义与执行命令用分号拼接,让新启动的bash进程先加载这个函数,再执行它
- 使用
bash -c而非sh -c,适配原脚本的bash语法,避免兼容性问题
修改后的完整脚本
#!/usr/bin/env bash # 要在终端启动时运行的函数 fopen() { ls } # 正确调用urxvt的方式 urxvt -e bash -c "$(declare -f fopen); fopen"
如果你的函数依赖脚本内的其他变量,也可以把变量定义一起传递,比如:
urxvt -e bash -c "$(declare -f fopen); $(declare -p your_variable); fopen"
内容的提问来源于stack exchange,提问作者Leonhard Euler
相关产品推荐
相关产品推荐

