Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BASH脚本:如何在启动时在rc.local中使用$HOME变量_Bash_Autostart - Fatal编程技术网

BASH脚本:如何在启动时在rc.local中使用$HOME变量

BASH脚本:如何在启动时在rc.local中使用$HOME变量,bash,autostart,Bash,Autostart,我正在执行rc.local中引用的shell脚本。该文件是git版本的,需要更改为每个用户各自的主目录。绝对路径工作正常,但机器之间的路径不同$HOME或~/尚未定义,如何在启动时更改为rc.local中的主用户目录 这是工作脚本: cd/home/username/rightDIR php-S localhost:8000 此脚本启动服务器,但未能事先移动到正确的目录: cd$HOME/rightDIR php-S localhost:8000 如果只有一个用户的主文件夹中有一个rightDI

我正在执行rc.local中引用的shell脚本。该文件是git版本的,需要更改为每个用户各自的主目录。绝对路径工作正常,但机器之间的路径不同$HOME或~/尚未定义,如何在启动时更改为rc.local中的主用户目录

这是工作脚本:

cd/home/username/rightDIR

php-S localhost:8000

此脚本启动服务器,但未能事先移动到正确的目录:

cd$HOME/rightDIR

php-S localhost:8000


如果只有一个用户的主文件夹中有一个
rightDIR
,则
cd/home/*/rightDIR&&php-S localhost:8000&
应该可以工作(否则第一个匹配项获胜)

&&
将命令链接在一起。如果
cd
命令失败,则之后的命令将不会启动

最后的
&
在后台将命令作为shell作业启动,以便shell可以继续并运行rc.local中此行之后的任何命令


如果启动挂起,请考虑添加<代码> NOHUP < /代码>左边的代码> PHP<代码>,以便从shell中分离命令。

你指的是“主用户”?code>$HOME已设置,
~
将使用
$HOME
的当前值,但它们都将引用root用户的主目录,因为
root
是执行
rc.local
的用户。我是指一旦机器启动后将登录的用户(例如我自己),因此,也许我应该换一种说法:即使脚本是由root用户执行的,但HOME是不同的,我如何才能将cd放入users目录中。(每个系统上只有一个用户)再说一遍,哪个用户?计算机可以有多个用户,并且在
rc点没有一个用户登录。本地
被执行。除了
root
,没有任何其他杰出用户的概念。如果有一个特定的非root用户参与启动过程,您必须在脚本中明确说明该用户是谁。一旦启动完成,机器无法猜测谁将登录。非常聪明的解决方法,在我的使用案例中:目标文件夹只存在一次,它工作得非常好!很高兴为您提供帮助:)如果有超过1个这样的文件夹,您也可以遍历all/home/*/rightDIR,检查每个文件夹的内容,甚至为每个文件夹启动一个Web服务器:)