'bash -c'是做什么的?


77

我遵循了以下教程:http : //davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/

在某个时候,它告诉我执行以下命令:

sudo bash -c "cat >> /etc/apache2/sites-available/magento-store.com <<EOF
<VirtualHost *:80>

  ServerName  localhost.magento-store.com
  ServerAlias www.localhost.magento-store.com

  DocumentRoot /home/dev/public_html/magento-store.com/public

  LogLevel warn
  ErrorLog  /home/dev/public_html/magento-store.com/log/error.log
  CustomLog /home/dev/public_html/magento-store.com/log/access.log combined

</VirtualHost>
EOF"

这个命令做了什么,我该如何取消呢?

我重新启动了计算机,看来它仍在运行。我看了看.bashrc.profile,但没有在里面找到它。



该命令应该已经立即运行并完成。要撤消它,您需要编辑magento-store.com文件。
Flimm 2013年

davidtsadler.com/archives/2012/06/03/…似乎坏了。DNS中都没有,davidtsadler.comwww.davidtsadler.com似乎没有。
彼得·莫滕森

Answers:


69

引用自man bash

-c字符串如果存在-c选项,则从字符串读取命令。
如果字符串后面有参数,则将其分配给位置参数,从$ 0开始。

您引用的命令会将heredoc中的文本(即,标记中的文本)附加VirtualHost到文件中/etc/apache2/sites-available/magento-store.com


15
有没有与有-c什么不同?
声音

17
@ tjt263实际上,在这种情况下不使用-c将使您花费大量时间尝试以各种方式转义各种引号,但仍然无法正常工作。
迷宫

5
另请注意,从调用的命令bash -c将被强制为单线程。例如:"bash -c 'ffmpeg -threads 4 -i input.mov output.mp4'"将调用ffmpeg,但是即使您指定了“线程”参数,它也只能使用一个内核
Christian

2
@基督徒为什么?这似乎非常不合理。
user60561

8
@Christian此行为未记录,并且也与实际行为不匹配:i.imgur.com/ZeFAkDf.png
user60561


1

这样在计算机或Internet上查看手册页。

引用:

-c string
     If the -c option is present, then commands are read from string.
     If there are arguments after the string, they are assigned to the positional
     parameters, starting with $0.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.