Views:
558β
Votes: 5β
β
Solution
Tags:
bash
nautilus
symbolic-link
Link:
π See Original Answer on Ask Ubuntu β§ π
URL:
https://askubuntu.com/q/1019481
Title:
Desktop shortcut to Bash script crashes and burns
ID:
/2018/03/26/Desktop-shortcut-to-Bash-script-crashes-and-burns
Created:
March 26, 2018
Edited: June 12, 2020
Upload:
September 15, 2024
Layout: post
TOC:
false
Navigation: false
Copy to clipboard: false
The problem is the script relies on the TERM
environmental variable being setup. The Ubuntu Unity Desktop does not have this initialized when scripts are called. If you open a terminal with Ctrl+Alt+T the variable is setup.
To test your system create a little script called test-term.sh
and make it look like this:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
Create a link in Nautilus to test-term.sh
and run the link. Then check the output file:
$ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
As you can see the environment variable TERM
is blank when the command env | grep TERM
is used. Also the variable $TERM
is set to dumb
which doesnβt suit the color-based, mouse-supported command dialog
very well.
Boilerplate solution
The short term solution was to include boilerplate code at the top of the two scripts in question:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi