Tengo un script personalizado en mi archivo .profile, con código agregado y sin quitar nada, sin embargo, todavía responde con un TERM ENVIRONMENT VARIABLE NOT SET
error. Sin embargo, si ejecuto el comando echo $TERM
en la terminal después del arranque, se configura en xterm-256color
. Estoy dispuesto a incluso suprimir el error en lugar de resolverlo, ya que no afecta a mi computadora después del arranque.
Aquí está el script en .profile:
clear
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
# --- EVERYTHING ABOVE HERE IS DEFAULT AND NOT CHANGED ---
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
(
echo )
else
(
echo Aquiring Internet Connection . . .
sleep 6)
fi
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
(
echo )
else
(
sleep 5)
fi
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
echo ==========================================================================================================================================
echo WELCOME LUKAKA LOCAL WEATHER REPORT VIA WTTR.IN Running XFCE
echo ==========================================================================================================================================
curl wttr.in
echo ==========================================================================================================================================
echo
echo -e "\033[1;32mStatus for play.wildcraftmc.com [Wildcraft Survival+ Server] \033[0m"
mcstatus play.wildcraftmc.com status >wildcraft.txt
sed -n 1p wildcraft.txt
tail -n -1 wildcraft.txt
echo ==========================================================================================================================================
echo -e "\033[1;32mStatus For Mc.Starlegacy.Net [Starlegacy Space Survival] \033[0m"
mcstatus mc.starlegacy.net status >Star-Legacy.txt
sed -n 1p Star-Legacy.txt
tail -n -1 Star-Legacy.txt
echo ==========================================================================================================================================
echo -e "\033[1;32mStatus For Jectile.com [Shoota COD Server] \033[0m"
mcstatus Jectile.com status >Star-Legacy.txt
sed -n 1p Star-Legacy.txt
tail -n -1 Star-Legacy.txt
echo ==========================================================================================================================================
rm Star-Legacy.txt
rm wildcraft.txt
else
echo Connection Failed.
fi
echo -n "Would you like to start the GUI (y/n)? "
old_stty_cfg=$(stty -g)
stty raw -echo ; answer=$(head -c 1) ; stty $old_stty_cfg # Careful playing with stty
if echo "$answer" | grep -iq "^y" ;then
sudo systemctl start lightdm
onedrive-d start
xinput set-prop 11 317 -1
else
echo No
echo -e "\033[0;33mskipping GUI. The following service(s) will not run: onedrive-d, lightdm, Minecraft-Lukaka, xinput 11.\033[0m"
fi
Para el contexto, lo que hace mi secuencia de comandos es verificar si hay una conexión a Internet; si está allí, obtiene wttr.in (clima) y usa una herramienta oficial de Minecraft para verificar el estado en algunos servidores.
Respuesta1
Entonces, una vez que su script llega al punto en el que le pregunta si desea iniciar la GUI, si dice que sí, ejecuta 3 comandos más:
sudo systemctl start lightdm
onedrive-d start
xinput set-prop 11 317 -1
Ahora, si sabe que los errores son inofensivos, puede redirigirlos a nada usando 2>/dev/null
después del comando que causa el error, como
sudo systemctl start lightdm 2>/dev/null
Sin embargo, sería más recomendable ejecutar cada uno de estos comandos por turno, revisar los errores que muestran y corregirlos si es posible.
Respuesta2
Debe verificar si está ejecutando en una terminal antes de imprimir mensajes o ejecutar comandos que requieran una terminal. Esto se puede hacer, por ejemplo, usando:
if [ -t 1 ] # check if stdout is a terminal
then
# in a TTY, do stuff
fi
Las fuentes del proceso de inicio de sesión de la GUI /etc/profile
y ~/.profile
para que se establezcan las variables de entorno que pueda necesitar. Pero este abastecimiento no se realiza en una terminal, por lo que TERM
no está configurado. Cuando abre una terminal y la ejecuta echo $TERM
, la terminal se ha configurado TERM
para los procesos iniciados por ella, por lo que obtiene un valor.
En mi opinión, debes empaquetar todo lo que agregaste en la if
verificación anterior, ya que nada de eso es particularmente relevante cuando se ejecuta en una GUI.