Check my upstart script code?

Nils Kassube kassube at gmx.net
Sun May 10 07:39:53 UTC 2015


John Hupp wrote:
> On 5/9/2015 11:20 AM, John Hupp wrote:
> > Here is the script code from an upstart job I'm trying to get
> > working
> > 
> > (but which doesn't work yet):
> >     # test for a fat client:
> >     if [[ $(hostname | grep 'ltsp') == ltsp* ]]; then
> >         sed 's/mount_removable=0/mount_removable=1/'
> > <~/.config/pcmanfm/lubuntu/pcmanfm.conf
> > >~/.config/pcmanfm/lubuntu/pcmanfm.conf

I suppose those last three lines should be a single line. Then it would 
be better to use the -i option for sed.

> Here is an improved upstart job (/etc/init/pcmanfm-ltsp.conf).  The
> script code is tested as working when run manually as a script, but it
> was not effective as an upstart job.  Perhaps environment variables
> like $HOME are not available to upstart jobs even though this one
> doesn't run until after the desktop session has started and $HOME
> should be defined at that point.

Like I wrote in my previous reply: You should use absolute paths instead 
of "~/" or "$HOME/" because $HOME isn't set according to [1]. Well, 
yesterday evening I didn't search for it and it was only an assumption, 
but it seems like guessing is enough sometimes. However it isn't always 
enough, because I was wrong about upstart being for system jobs only.

Anyway, I think your assumption about $HOME is also flawed in another 
way. If you put an upstart configuration file in "/etc/init/", it is a 
system job. Then it is run by root and the "$HOME/" would be "/root/" 
(if it was set). It has nothing to do with the time when the job starts, 
so if the desktop session has started already, $HOME may be set for the 
session user. However the system job is independent from the user 
starting the session.

> But given that the code works as a script, I can probably get what I
> want by setting that up with a desktop shortcut in an autostarting
> location.

IMHO that would be the right approach, after all you want to do 
something for each individual user. Of course you could also use an 
upstart session job [2], but considering that *Ubuntu is moving from 
upstart to systemd, it is probably not a good idea to write things 
depending on upstart if you want it to work even after the next version 
upgrade.


Nils

[1] <http://upstart.ubuntu.com/cookbook/#job-environment>
[2] <http://upstart.ubuntu.com/cookbook/#session-job>





More information about the ubuntu-users mailing list