Shell exits when I source a script with dialog/whiptail call
Clash Royale CLAN TAG#URR8PPP
I have the following script:
#!/bin/bash
set -e
TITLE="Choose version"
VERSIONS=$(cat <<'END'
AAA
BBB
END
)
VERSION_LIST=$(echo "$VERSIONS" | awk 'print NR, " ", $0')
INDEX=$(whiptail
--no-cancel
--menu "$TITLE" 15 40 15
$VERSION_LIST
3>&1 1>&2 2>&3)
When I make it executable and run it, it works as intended. When I call it with source
from bash or zsh, one of the following scenarios happens:
- Terminal closes (bash seems to exit)
- Terminal stays open, but will crash/exit soon. Easiest way to reproduce is to type
ls somefile
and press TAB for completion.
I'm using Fedora 29 and I also can see this behaviour on Mac OS. Is there any specific consideration that needs to be taken into account when using whiptail/dialog in a sourced script?
bash shell-script dialog
add a comment |
I have the following script:
#!/bin/bash
set -e
TITLE="Choose version"
VERSIONS=$(cat <<'END'
AAA
BBB
END
)
VERSION_LIST=$(echo "$VERSIONS" | awk 'print NR, " ", $0')
INDEX=$(whiptail
--no-cancel
--menu "$TITLE" 15 40 15
$VERSION_LIST
3>&1 1>&2 2>&3)
When I make it executable and run it, it works as intended. When I call it with source
from bash or zsh, one of the following scenarios happens:
- Terminal closes (bash seems to exit)
- Terminal stays open, but will crash/exit soon. Easiest way to reproduce is to type
ls somefile
and press TAB for completion.
I'm using Fedora 29 and I also can see this behaviour on Mac OS. Is there any specific consideration that needs to be taken into account when using whiptail/dialog in a sourced script?
bash shell-script dialog
add a comment |
I have the following script:
#!/bin/bash
set -e
TITLE="Choose version"
VERSIONS=$(cat <<'END'
AAA
BBB
END
)
VERSION_LIST=$(echo "$VERSIONS" | awk 'print NR, " ", $0')
INDEX=$(whiptail
--no-cancel
--menu "$TITLE" 15 40 15
$VERSION_LIST
3>&1 1>&2 2>&3)
When I make it executable and run it, it works as intended. When I call it with source
from bash or zsh, one of the following scenarios happens:
- Terminal closes (bash seems to exit)
- Terminal stays open, but will crash/exit soon. Easiest way to reproduce is to type
ls somefile
and press TAB for completion.
I'm using Fedora 29 and I also can see this behaviour on Mac OS. Is there any specific consideration that needs to be taken into account when using whiptail/dialog in a sourced script?
bash shell-script dialog
I have the following script:
#!/bin/bash
set -e
TITLE="Choose version"
VERSIONS=$(cat <<'END'
AAA
BBB
END
)
VERSION_LIST=$(echo "$VERSIONS" | awk 'print NR, " ", $0')
INDEX=$(whiptail
--no-cancel
--menu "$TITLE" 15 40 15
$VERSION_LIST
3>&1 1>&2 2>&3)
When I make it executable and run it, it works as intended. When I call it with source
from bash or zsh, one of the following scenarios happens:
- Terminal closes (bash seems to exit)
- Terminal stays open, but will crash/exit soon. Easiest way to reproduce is to type
ls somefile
and press TAB for completion.
I'm using Fedora 29 and I also can see this behaviour on Mac OS. Is there any specific consideration that needs to be taken into account when using whiptail/dialog in a sourced script?
bash shell-script dialog
bash shell-script dialog
asked Feb 13 at 10:36
John DoeJohn Doe
1132
1132
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Your script sets the errexit
flag with set -e
. After you source it, unchecked failing commands will cause the shell to exit. If you're using the programmable completion scripts, some of them might run a failing command, which would explain why tab-completion triggers it.
The solution here would be to not source the script, but run it as usual, or to replace set -e
with sufficient error checking on all the relevant commands, and to return
if they fail. (Not exit
, since that would exit the whole shell, return
returns from a sourced script.)
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500371%2fshell-exits-when-i-source-a-script-with-dialog-whiptail-call%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your script sets the errexit
flag with set -e
. After you source it, unchecked failing commands will cause the shell to exit. If you're using the programmable completion scripts, some of them might run a failing command, which would explain why tab-completion triggers it.
The solution here would be to not source the script, but run it as usual, or to replace set -e
with sufficient error checking on all the relevant commands, and to return
if they fail. (Not exit
, since that would exit the whole shell, return
returns from a sourced script.)
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
add a comment |
Your script sets the errexit
flag with set -e
. After you source it, unchecked failing commands will cause the shell to exit. If you're using the programmable completion scripts, some of them might run a failing command, which would explain why tab-completion triggers it.
The solution here would be to not source the script, but run it as usual, or to replace set -e
with sufficient error checking on all the relevant commands, and to return
if they fail. (Not exit
, since that would exit the whole shell, return
returns from a sourced script.)
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
add a comment |
Your script sets the errexit
flag with set -e
. After you source it, unchecked failing commands will cause the shell to exit. If you're using the programmable completion scripts, some of them might run a failing command, which would explain why tab-completion triggers it.
The solution here would be to not source the script, but run it as usual, or to replace set -e
with sufficient error checking on all the relevant commands, and to return
if they fail. (Not exit
, since that would exit the whole shell, return
returns from a sourced script.)
Your script sets the errexit
flag with set -e
. After you source it, unchecked failing commands will cause the shell to exit. If you're using the programmable completion scripts, some of them might run a failing command, which would explain why tab-completion triggers it.
The solution here would be to not source the script, but run it as usual, or to replace set -e
with sufficient error checking on all the relevant commands, and to return
if they fail. (Not exit
, since that would exit the whole shell, return
returns from a sourced script.)
answered Feb 13 at 10:56
ilkkachuilkkachu
60.4k1098171
60.4k1098171
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
add a comment |
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
Thank you! The script is being sourced because I want to set environment variables based on user's choice.
– John Doe
Feb 13 at 11:36
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500371%2fshell-exits-when-i-source-a-script-with-dialog-whiptail-call%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown