You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在启动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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:35:19