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 pgtestin/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.