我的.bash_profile
文件中有2个别名,其中包含:
alias chrome="/Applications/Google\\ \\Chrome.app/Contents/MacOS/Google\\ \\Chrome"
alias chromex="chrome --disable-web-security"
但是在运行时,它会打开Chrome但仍然保持终端窗口...一旦我关闭终端窗口,它也会关闭chrome。
有没有办法让它在后台运行?
我记得我在thin
或thin start -d
的{{1}}网络服务器上使用此功能?
由于
除了詹姆斯回答之外,我还找到了thin start --daemonize
命令行,这使得我可以通过将nohup
附加到&
命令来解决终端而没有问题:
nohup
默认输出将写入$ nohup chromex &
文件
要停止作业,我可以运行nohup.out
,通过正确的命令找到PID然后ps ax
答案 0 :(得分:53)
在命令行的末尾添加&符号。
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome &"
如果您还不想看到任何调试chrome输出,请将stdout和stderr重定向到/ dev / null
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome 2>&1 > &"
在Mac上,您可以使这更简单:
alias chrome="open /Applications/Google\ Chrome.app/ --args --disable-web-security"
你的第二个要求使这个稍微复杂一点。 &需要在命令行的末尾;但是你的第二个别名会在第一个命令的末尾添加命令 - 即在&符之后 - 所以这不起作用。
为了解决这个问题,我们可以将'chrome'重新定义为一个函数。
chrome () {
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome $* 2>&1 &
}
$*
表示传递给函数的任何命令行参数都将插入到&符号之前。这意味着您仍然可以将第二个别名定义为
alias chromex="chrome --disable-web-security"
这将扩展到
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security 2>&1 &
顺便说一下,这就是所谓的“在后台”运行。 “作为守护进程”是指每当打开机器时运行的服务器进程,并且不依赖于任何用户的会话。
答案 1 :(得分:3)
我在.zshr上定义了别名(同样适用于.bash_profile),如下所示:
open_by_browser(){ open -a $1 $2}
alias firefox='open_by_browser firefox'
alias chrome='open_by_browser "Google Chrome"'
然后我可以通过Firefox或Chrome打开html文件
例如,通过Firefox
firefox xxx/index.html
Chrome浏览器
chrome xxx/index.html