Add a New Comment (Rich Markup)
Comment Type & Canned Response: None None
I got it. It will be fixed in the next devel branch push.
So when is the trap supposed to execute? When the subshell that runs the right side of the pipe exits?
This was discovered while building a CI script with gitlab, see related issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/41581
Gitlab executes the a script with an available shell in the following way:
> : | eval "<script>"
see https://gitlab.com/gitlab-org/gitlab-runner/blob/master/shells/bash.go#L205
I don't know why they use this pipe here, but when a trap is defined inside an eval does not fire the trap when the shell exits:
> $ bash -c ": | eval 'trap \"echo TRAP\" EXIT'" > $
While it works fine in dash and zsh:
> $ dash -c ": | eval 'trap \"echo TRAP\" EXIT'" > TRAP > $
> $ zsh -c ": | eval 'trap \"echo TRAP\" EXIT'" > TRAP > $
And it works also in bash, when i run the eval in a subshell:
> $ bash -c ": | (eval 'trap \"echo TRAP\" EXIT')" > TRAP > $
Note: without the pipe, it is also working:
> $ bash -c "eval 'trap \"echo TRAP\" EXIT'" > TRAP > $
(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)
Attach Files: Comment:
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Only logged-in users can vote.
Please enter the title of George Orwell's famous dystopian book (it's a date):
Follow 2 latest changes.
Copyright © 2023 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. The Levitating, Meditating, Flute-playing Gnu logo is a GNU GPL'ed image provided by the Nevrax Design Team. Source Code
Powered by Savane 3.10