从命令行调用 gedit 时,如何将 `gedit something & disown` 的行为转换为默认行为?

Kzq*_*qai 3 shell terminal job-control alias disown

当我gedit从命令行提交文件时,它总是锁定终端,而且我厌倦了为它明确命令一个分离的进程。

我尝试将别名设置gedit为类似gedit $* & disown,但要么这不是正确的语法,要么不允许您使用别名重载可执行的二进制命令(尝试在 .bash_aliases 函数中使用它,

alias gedit=editorz

function editorz()
{
  gedit $* & disown
}
Run Code Online (Sandbox Code Playgroud)

),但不需要。

那么如何使命令gedit test.txt不锁定原始终端窗口?

Gil*_*il' 6

这应该有效:你确定你.bash_aliases的阅读?(它不是标准文件,但它可能来自您的~/.bashrc. 如果您对.bashrcand感到困惑.bash_profile,请参阅.bashrc 和 .bash_profile 之间的区别。)

您的函数中有一个错误:应该是

editorz () {
  gedit "$@" & disown
}
Run Code Online (Sandbox Code Playgroud)

您的版本不适用于包含空格或 shell 通配符的文件名。该function关键字是可选的。

您可以调用该函数gedit(并完全省去别名),但是您需要告诉 shell 函数内部的调用是对命令而不是函数的调用:

gedit () {
  command gedit "$@" & disown
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不小心在前台启动了 gedit(即锁定了您的终端),您可以通过在终端中按Ctrl+Z并输入命令将其置于后台bg