- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 bash 函数,我想使用 gnome 终端在新窗口中执行该函数。我该怎么做?我想在我的 blah.sh 脚本中做这样的事情:
my_func() {
// Do cool stuff
}
gnome-terminal -x my_func
我现在正在做的是将 my_func() 放入脚本并调用 gnome-terminal -x ./my_func
最佳答案
正如@kojiro 在上面的评论中指出的那样,您可以使用 export -f
让它工作。
# Define function.
my_func() {
// Do cool stuff
}
# Export it, so that all child `bash` processes see it.
export -f my_func
# Invoke gnome-terminal with `bash -c` and the function name, *plus*
# another bash instance to keep the window open.
# NOTE: This is required, because `-c` invariably exits after
# running the specified command.
# CAVEAT: The bash instance that stays open will be a *child* process of the
# one that executed the function - and will thus not have access to any
# non-exported definitions from it.
gnome-terminal -x bash -c 'my_func; bash'
我从 https://stackoverflow.com/a/18756584/45375 借用了技术
通过一些技巧,您可以在没有 export -f
的情况下凑合,假设运行该函数后保持打开状态的 bash 实例本身不需要继承 my_func
.
declare -f
返回 my_func
的定义(源代码),因此只需在新的 bash 实例中重新定义它:
gnome-terminal -x bash -c "$(declare -f my_func); my_func; bash"
话又说回来,如果你愿意,你甚至可以在其中压缩 export -f
命令:
gnome-terminal -x bash -c "$(declare -f my_func);
export -f my_func; my_func; bash"
关于linux - 在 gnome-terminal -x 中运行 bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002132/
我有一个脚本,需要在用户通过 nx 客户端登录后启动。据我了解,Gnome 在用户登录后启动(如果我错了,请纠正我)。我应该把脚本放在哪里,以便它在用户登录后启动? 相关信息:我正在一台 redhat
我想通过我的 shell 扩展支持多个 GNOME 版本。如何检测它运行的 GNOME 版本并适本地分支代码? 最佳答案 const Config = imports.misc.config; if
我在 Gnome 中有一个窗口,我想删除其标题栏。这在 FVWM2 中很容易:我只是将窗口样式设置为包含 NoTitle .在 Gnome 中似乎没有类似的选项。 我最近学会了使用 wmctrl修改符
我如何开始为 GNOME 做贡献?我会用 C++ 和 Python 编程,但从未接触过 C。我什至不熟悉 GTK。 老实说,我不知道 GNOME 是如何工作的。我所拥有的只是以某种方式为它做出贡献的强
有没有办法禁用 Gnome 经典桌面热角(左上角)?我不小心激活它的频率比我故意激活的频率要高得多,这很烦人。我有一个 Fn+whatever 键可以做同样的事情,所以我真的不需要热角。 最佳答案 您
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
我想编写一个扩展,其功能与GNOME Shell中"focus-follows mouse"设置相反:我想使指针移动到当前聚焦窗口的中心。 可以在GNOME Shell扩展中完成吗?我看到了一些包装x
如何添加事件或其他方法来监听 gnome shell 扩展上的按键?例如每次按键都显示一个对话框,显示按下的键? 我找不到任何例子。 documentation提到了 keyboard模块,但是使用该
我尝试过: gsettings set org.gnome.desktop.background primary-color '#000000' gsettings set org.gnome.des
我已经使用 gedit 作为编程文本编辑器有一段时间了... 我想将最近打开的文件数量从 5 个增加到 10 个... 我检查了 gedit 首选项和 gconf-editor gedit 选项,但没
我试图让 guile-gnome 与安装在我机器上的 Guile 一起工作。我已经根据 the instructions here 下载并构建了 guile-gnome ,但无论我给它什么前缀,我似乎
我电脑的面板分辨率为 3840 x 2160 像素。如果我打开一个 gnome-boxes session ,虚拟机代码占用的空间比邮票大一点。 GNOME-Boxes 报告我看到了 1920 x 1
我曾经用 No Topleft Hot Corner 禁用 gnome-shell 的热角功能。扩大。升级到 gnome-shell 40 已弃用。 Gnome-tweaks声称它也可以禁用它,但是激
有没有办法从命令行启动 gnome-terminal(即,使用/usr/bin/gnome-terminal 命令)并让新终端继承运行命令的终端的环境变量和其他设置变量?场景是这样的: 打开终端 设置
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
我正在尝试编写我的第一个 Shell 扩展,并且 - 正如那里的每篇博客文章一样 - 我因缺乏最新文档而苦苦挣扎...... 也就是说,我正在尝试从键盘上获取所有击键,并且 - 查看在线代码和旧邮件列
如何更改背景颜色?我选择了 Profile > Background > solid color ,但我在哪里可以选择颜色? 最佳答案 有两种受支持的方法可以更改 xterm 的背景颜色(请记住 xt
我写了一个小的 GNOME Shell 扩展,我想分发给一些同事。 为此,我创建了一个 RPM。安装后需要重新启动 GNOME-Shell 才能使扩展可见,因此可以启用它。通过使用 其次是 r使用 X
我目前正在尝试重构现有的 gnome-shell 扩展的代码库。部分原因是引入单元测试,因为在 2016 年不使用测试似乎相当疏忽。 经过一番修补后,我设法设置了一个有效的 node-phantomj
Gnome Shell 有很好的快捷方式,但是,我找不到以编程方式调用它们的方法 假设我想使用 GJS 脚本启动 Google Chrome,将其移动到工作区 1,并将其最大化,然后启动 Emacs,
我是一名优秀的程序员,十分优秀!