2017-06-18 110 views
1

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

这是工作脚本:

CD /家庭/用户名/ rightDIR

PHP -S本地主机:8000

该脚本启动服务器,但无法迁入正确的目录:

cd $ HOME/rightDIR

PHP -S本地主机:8000

+0

谁做你的“主用户”是什么意思? '$ HOME'设置和'〜'将使用'$ HOME'的电流值,但他们都将参照根用户的主目录,如'root'是执行'rc.local'用户。 – chepner

+0

我的意思是将要登录,一旦机器启动(如我)的用户,所以也许我应该改一下:我怎么能cd到即使脚本是由根家在哪里执行不同的用户目录。 (每个系统上只有一个用户) – TheRed

+0

再次,什么用户?机器可以有多个用户,并且在'rc.local'执行的时候,* none *都是登录的。除了'root'之外,没有任何其他尊贵用户的概念。如果有一个特定的非root用户参与启动过程,则必须在脚本中明确说明是谁。机器无法猜测*一旦启动完成后,谁将登录。 – chepner

回答

1

cd /home/*/rightDIR && php -S localhost:8000 &如果只有一个用户在自己的主文件夹中有一个rightDIR应该工作(否则,第一场比赛获胜)。

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

&末开始的命令在后台壳工作,使外壳可以继续并运行此行rc.local中

之后到来的任何命令。如果启动挂起无论如何,考虑增加nohup而不是php左侧,以便从shell中分离命令。

+0

非常聪明的解决方法,并在我的用例:目标文件夹只存在一次,它工作得很好! – TheRed

+0

很高兴帮助:) 如果都不超过1这样的文件夹,你可以还通过所有环/家庭/ */rightDIR,要么检查内容,甚至启动一个web服务器对每个:) – Jay