我想知道bash中这两个语法之间有什么区别:( &)和( ) &.
我注意到的唯一区别是,(tty &)将返回"not tty"而(tty) &将返回当前的tty名称,但为什么呢?
举个例子,我应该跑步(setsid startx &)还是(setsid startx) &?
如果是
(tty &)
Run Code Online (Sandbox Code Playgroud)
一个子shell启动,它tty在后台启动另一个进程而没有作业控制和终端,因此存在"not tty"错误.该tty过程将与PPID 1分离
如果是
(tty) &
Run Code Online (Sandbox Code Playgroud)
子shell启动并在后台运行.这个后台shell启动一个tty进程,在tty完成并向终端报告后,子shell在后台完成.
-
tty是一个简单的命令.特定命令(如startx)是否需要( ... &)构造从父进程分离/废弃取决于命令本身.进程可以通过多种方式依次启动子进程并将其分离,因此命令可能不需要它.