I am going to configure the Ubuntu 14.04 server to automate Android hybrid applications using the Phonegap CLI. Having recorded all the relevant scripts, I ran into a rather strange problem - when I connect SSH to my server, I can run the script and successfully execute all Phonegap commands in my interactive shell session. However, every attempt to run the same commands in an automatic script that is fired by some other event generated by the user does not work. To catch the problem, I reduced it to a simple experiment, which I set out below.
Step 1 - write a startup script pgtest
in/etc/init.d
#! /bin/bash
source ~/.nvm/nvm.sh;
nvm use stable;
cd /home;
ls >> /tmp/ls;
which node >> /tmp/node;
which git >> /tmp/git;
which phonegap >> /tmp/pgp;
phonegap -v >> /tmp/pgpv 2>/tmp/pgpe;
Explanations
- NVM Node, , , nvm.sh
- NVM (4.1.1.) Node + NPM
- , ,
ls /home
/tmp/ls
. - , node, git phonegap ,
which node|git|phonegap
/tmp
. - , Phonegap,
phonegap -v
, . , , /tmp/pgpe
.
2 - , pgtest
ln -s/etc/init.d/pgtest/etc/rc2.d/S04PGTest
- , script
/tmp
.
ls
- /home
, .node
, git
pgp
node, git Phonegappgpv
, Phonegap, EMPTYpgpe
, phonegap -v
. pgpe
.
path.js: 8
throw new TypeError (' . Received' +
^
TypeError: . undefined
assertPath ( .js: 8: 11)
Object.posix.join( .js: 477: 5)
.
(//.nvm//node/v4.1.1/lib/node_modules/PhoneGap/node_modules/phonegap-build/lib/common/config/global.js:17:28)
Module._compile (module.js: 434: 26)
Object.Module._extensions..js(module.js: 452: 10)
Module.load(module.js: 355: 32)
.Module._load (module.js: 310: 12)
Module.require(module.js: 365: 17)
(module.js: 384: 17)
. (/root/.nvm/versions/ node/v4.1.1/lib/node_modules/phonegap/node_modules/phonegap-build/lib/common/config.js:9:13)
. /tmp
/etc/init.d/pgtest
,
/tmp/ls
/home
,/tmp/node
, /tmp/git
/tmp/pgp
/tmp/pgpv
5.3.6
- Phonegap/tmp/pgpe
EMPTY,
, bash , script - , , script .
. , , , . , script? , /tmp/pgpe
? , ?
, .
@Eduardo. ( init.d). DIFF ( vs init.d) . DIFF
---/home/env.inter 2015-11-11 08: 30: 40.314172560 +0000 +++/home/env.auto 2015-11-11 08: 32: 55.240906000 +0000 @@-1,48 +1,38 @@ BASH =/bin/bash BASHOPTS = cmdhist: complete_fullquote: extquote: force_fignore: hostcomplete: interactive_comments: login_shell: progcomp: promptvars: SourcePath BASH_ALIASES =() -BASH_ARGC =() -BASH_ARGV =() + BASH_ARGC = ([0] = "1" ) + BASH_ARGV = ([0] = "" ) BASH_CMDS =() BASH_LINENO = ([0] = "0" ) -BASH_SOURCE = ([0] = "/ .. /init.d/pgtest" ) + BASH_SOURCE = ([0] = "/ .. /rc 2.d/S04pgtest" ) BASH_VERSINFO = ([0] = "4" 1 = "3" [2] = "11" [3] = "1" [4 ] = "release" [5] = "x86_64-pc-linux-gnu" ) BASH_VERSION = '4.3.11 (1) -' DIRSTACK =() EUID = 0 =() -home =/ HOSTNAME = example.com HOSTTYPE = x86_64 IFS = $'\ t\n' -lang = en_US.UTF-8 -LESSCLOSE = '/usr/bin/lesspipe% s% s' -LESSOPEN = '|/usr/bin/lesspipe% s ' -LOGNAME = -LS_COLORS = 'Rs = 0: = 01; 34: = 01; 36: = 00: = 40; 33: = 01; 35: 01 = ; 35: = 40; 33; 01: = 40; 33; 01: = 40; 31; 01: = 37; 41: SG = 30; 43: = 30; 41: TW = 30; 42: = 34; 42: = 37; 44: = 01; 32:.tar = 01; 31:.tgz = 01; 31:.arj = 01; 31:.taz = 01; 31:.lzh = 01; 31:.lzma = 01; 31:.tlz = 01; 31:.txz = 01; 31:.zip = 01; 31:.z = 01; 31:.Z = 01; 31:.dz = 01; 31:.gz = 01; 31:. LZ = 01; 31:.xz = 01; 31:.bz2 = 01; 31:.bz = 01; 31:.tbz = 01; 31:.tbz2 = 01; 31:.tz = 01; 31:.deb = 01; 31:.rpm = 01; 31:.jar = 01; 31:.war = 01; 31:.ear = 01; 31:.sar = 01; 31:.rar = 01; 31:.ace = 01; 31:.zoo = 01; 31:.cpio = 01; 31:.7z = 01; 31:.rz = 01; 31:.jpg = 01; 35:.jpeg = 01; 35:.gif = 01; 35:.bmp = 01; 35:.pbm = 01; 35:.pgm = 01; 35:.ppm = 01; 35:.tga = 01; 35:.xbm = 01; 35:.xpm = 01; 35:.tif = 01; 35:.tiff = 01; 35:.png = 01; 35:.svg = 01; 35:.svgz = 01; 35:.mng = 01; 35:.pcx = 01; 35:.mov = 01; 35:.mpg = 01; 35:.mpeg = 01; 35:.m2v = 01; 35:.mkv = 01; 35:.webm = 01; 35:.ogm = 01; 35:.mp4 = 01; 35:.m4v = 01; 35:.mp4v = 01; 35:.vob = 01; 35:.qt = 01; 35:.nuv = 01; 35:.wmv = 01; 35:. = 01; 35:.rm = 01; 35:.rmvb = 01; 35:.flc = 01; 35:.avi = 01; 35:.fli = 01; 35:.flv = 01; 35:.gl = 01; 35:.dl = 01; 35:.xcf = 01; 35:.xwd = 01; 35:.yuv = 01; 35:.cgm = 01; 35:.em F = 01; 35:.axv = 01; 35:.anx = 01; 35:.ogv = 01; 35:.ogx = 01; 35:.aac = 00; 36:.au = 00; 36:.flac = 00; 36:.mid = 00; 36:.midi = 00; 36:.mka = 00; 36: 00 =.mp3; 36:.mpc = 00; 36:.ogg = 00; 36:.ra = 00; 36:.wav = 00; 36:.axa = 00; 36:.oga = 00; 36:.spx = 00; 36:.xspf = 00; 36: " MACHTYPE = x86_64--Linux- -Mail =/// -NVM_DIR =//.nvm -NVM_IOJS_ORG_MIRROR = https://iojs.org/dist-NVM_NODEJS_ORG_MIRROR = https://nodejs.org/dist-NVM_RC_VERSION = Opterr = 1 OPTIND = 1 OSTYPE = Linux- -Path =/Opt/Android/ :/OPT/Android/:/OPT/:/USR//SBIN:/USR//:/USR/SBIN:/USR/:/SBIN:/:/USR/:/USR// + PATH =/SBIN:/USR/SBIN:/:/USR/ PIPESTATUS = ([0] = "0" ) -PPID = 4801 + PPID = 911 + PREVLEVEL = N PS4 = '+' -pwd =/ .. /init.d PWD = +/ + 2 = SHELL =/bin/ bash SHELLOPTS = braceexpand: hashall: - -SHLVL = 3 -SSH_CLIENT = 'nn.nn.nn.nn nnnn nnnn' -SSH_CONNECTION = 'nn.nn.nn.nn nnnn nn.nn.nn.nn nnnn' -SSH_TTY =/DEV//0 -TERM = Xterm + SHLVL = 1 + TERM = Linux UID = 0 -USER = -XDG_RUNTIME_DIR =///1000 -XDG_SESSION_ID = 5 + UPSTART_EVENTS = + = UPSTART_INSTANCE + UPSTART_JOB = _ = + = N + 2 =
, - IP- SSH.
, , @Eduardo
EXPORT PATH=/opt/android/platform-tools:/opt/android/tools:/opt/android:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
script - source ~/.nvm...
. : /tmp/pgpv
, /tmp/pgpe
.