Phonegap command line is launched from an SSH session, but not from a bash script

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 Phonegap
  • pgpv, Phonegap, EMPTY
  • pgpe

, 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.

+4
1

PATH script , , diff, .

, , HOME NVM *. test.sh script , :

#!/bin/bash
set > /tmp/env_vars.log

script :

#!/bin/bash 
export TERM=linux
export USER=root
export HOME=/root
export NVM_DIR=/root/.nvm
export NVM_IOJS_ORG_MIRROR=https://iojs.org/dist
export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
export NVM_RC_VERSION=
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
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;
test.sh
+1

Source: https://habr.com/ru/post/1614245/


All Articles