Linux Mint .profile переменная TERM не установлена

Linux Mint .profile переменная TERM не установлена

У меня есть пользовательский скрипт в моем файле .profile с добавленным кодом и ничем не удаленным, однако он все еще отвечает с ошибкой TERM ENVIRONMENT VARIABLE NOT SET. Однако если я запускаю команду echo $TERMв терминале после загрузки, она устанавливается на xterm-256color. Я открыт даже для подавления ошибки вместо ее решения, поскольку она не влияет на мой компьютер после загрузки.

Вот скрипт в .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

Вот сообщение об ошибке:ошибаться\

Для контекста, мой скрипт проверяет наличие интернет-соединения, и если оно есть, он получает wttr.in (погода) и использует официальный инструмент Minecraft для проверки статуса на некоторых серверах.

решение1

Итак, как только ваш скрипт дойдет до точки, где он спросит вас, хотите ли вы запустить графический интерфейс, если вы ответите «да», он выполнит еще 3 команды:

sudo systemctl start lightdm

onedrive-d start

xinput set-prop 11 317 -1

Теперь, если вы знаете, что ошибки безвредны, вы можете перенаправить их в nothingless, используя 2>/dev/nullпосле команды, вызывающей ошибку, например:

sudo systemctl start lightdm 2>/dev/null

Однако было бы более целесообразно выполнить каждую из этих команд по очереди, просмотреть отображаемые ошибки и исправить их, если это возможно.

решение2

Вам следует проверить, работаете ли вы в терминале, прежде чем печатать сообщения или запускать команды, требующие терминал. Это можно сделать, например, с помощью:

if [ -t 1 ] # check if stdout is a terminal
then
  # in a TTY, do stuff
fi

Источники процесса входа в GUI /etc/profileи, ~/.profileтаким образом, любые переменные окружения, которые вам могут понадобиться, установлены. Но этот источник не выполняется в терминале, поэтому TERMне установлен. Когда вы открываете терминал и запускаете echo $TERM, терминал устанавливает TERMдля запущенных им процессов, поэтому вы получаете значение.

На мой взгляд, вам следует обернуть все, что вы добавили, в ifпроверку, приведенную выше, поскольку ничего из этого не имеет особого значения при запуске в графическом интерфейсе.

Связанный контент