Ho configurato un lavoro Jenkins alla fonte uno script bash che le fonti un altro script bash che aggiunge un alias al .bashrc
dei suoi utenti e le fonti del .bashrc
in sé, e quindi script originale cerca di usa quell'alias (impostato dal secondo). Tuttavia, non riesco a trovare l'alias che ha appena creato. Non sto usando alcun plug-in di scripting oltre all'usare un passo "Invia file o esegui comandi su SSH" per dare origine allo script.Jenkins non può accedere alias di shell
Il lavoro fa questo:
source ./test_script.sh
test_script.sh
assomiglia a questo:
echo "In test_script.sh"
echo $USER
echo $HOME
source ./setup_env.sh
echo "\nBack in test_script.sh"
alias foo
foo
E, infine, setup_env.sh
assomiglia a questo:
echo "\nIn setup_env.sh"
echo "alias foo=\"echo foobar\"" >> $HOME/.bashrc
source $HOME/.bashrc 2>/dev/null
cat $HOME/.bashrc
L'uscita che ricevo dalla Jenkins lavoro assomiglia a questo:
In test_script.sh
my_user
/home/my_user
\nIn setup_env.sh
...all of my bashrc...
alias foo="echo foo"
\nBack in test_script.sh
alias foo='echo foo'
./test_script.sh: line 7: foo: command not found
Non capisco perché questo sta accadendo, quando posso gestirlo felicemente da solo sulla riga di comando e guardarlo avere successo. Perché Jenkins non può usare il nuovo alias, quando può ovviamente trovarlo (come dimostrato dall'output del comando alias foo
)?
See (http://unix.stackexchange.com/a/1498/43764) – Armali