命令参数之前或之后的与号 (&) 之间的区别

命令参数之前或之后的与号 (&) 之间的区别

我是 Windows 用户,我使用 Cygwin 作为我的终端。为了从终端运行 notepad++,我已将以下行添加到 ~/.bash_profile:

npp () {
    /cygdrive/d/Notepad++/notepad++.exe $(cygpath -w -- "$@")
    }

它成功了,所以接下来我需要一种方法在后台启动它,这样我就可以打开一个 npp++ 实例而不停止我的终端流。这有效:

npp foo &

但我不想手动引入该“&”符号,因此我尝试将此别名添加到 ~/.bash_profile:

alias npp="npp &"

现在:

npp foo

在后台工作。

问题是,使用 gnu/linux 命令时,您需要在参数后面写上“&”符号,否则它将不起作用。

这有效:

ls directory &

这不:

ls & directory

所以我想知道我在这里遗漏了什么,因为:

npp foo

当我设置时,它实际上在后台工作

alias npp="npp &"

当我评论它时它却没有。

答案1

以下命令在后台启动作为其单个参数ls传递的可执行文件directory,这就是您想要做的:

ls directory &

那个ls在没有任何参数的情况下在后台启动,然后(试图)directory在前台作为命令启动,这不是你想要做的:

ls & directory

使用alias不会改变这种行为,除非cygwin sh具有我不知道的特定功能,对此我非常怀疑。

相关内容