为什么我必须输入/etc/init.d/apache2 (args)
才能运行 apache?
难道就没有办法吗apache2 args
??
答案1
您通常不需要键入命令来运行 Apache:它会在系统引导时启动。/etc/init.d
如果您的系统设置正确,启动服务中的脚本会在启动时自动执行。对于大多数发行版,服务默认处于启用状态,并且除非您执行了某些操作来禁用它们,否则它们将会启动。
如果您已经停止了 Apache 并且想要重新启动它,/etc/init.d/apache2 start
这是正常的方式 - 或者最好是service apache2 start
。使用较短的命令没有什么用处,因为这不是正常系统使用的一部分。通用命令可以在不指定完整路径的情况下执行;这些命令位于PATH
环境变量(Windows 模仿的)中列出的目录中。
答案2
您可能应该使用该service
命令来启动它。
service apache2 start
并且 apache 参数应该在您的/etc/apache2
结构中。
答案3
这是因为 $PATH 中未设置 /etc/init.d/。
它本质上是一个以 : 分隔的目录列表。当您执行命令时,shell 会逐个搜索这些目录,直到找到可执行文件所在的目录。 (http://www.cs.purdue.edu/homes/cs348/unix_path.html)
答案4
有很多方法可以调用不在您的PATH
.
了解这些方法是很好的 - 但是,如果您发现自己只是为了执行命令而使用所有更奇特的特技,那么这将表明系统设计不太理想。
假设这是您的脚本,名为s
,您将其放入/home
(以使其无法访问,因为它/home
肯定不在您的 中PATH
):
echo "The first argument is: $1"
echo "The second argument is: $2"
在不给出绝对路径的情况下仍然可以到达它的三种方法是:
别名:alias salias='/home/s'
一个函数:sfunc () { /home/s $@ }
一条链接:ln -s /home/s slink
前两个,如果您再次使用它们,您需要放入 shell 初始化文件(.bashrc
对于 bash、.zshrc
对于 zsh 等)。要使用链接(第三种情况),您必须将其放在您包含的目录中PATH
,或者,您可以使用绝对路径显式调用它(例如,如果您位于同一目录中,则./slink one two
) 。