.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 (天気) を wget し、公式の Minecraft ツールを使用して一部のサーバーのステータスをチェックします。
答え1
したがって、スクリプトが GUI を起動するかどうかを尋ねるところまで来たら、はいと答えるとさらに 3 つのコマンドが実行されます。
sudo systemctl start lightdm
onedrive-d start
xinput set-prop 11 317 -1
エラーが無害であることがわかっている場合は、2>/dev/null
エラーの原因となったコマンドの後に、次のように使用してエラーをnothinglessにリダイレクトできます。
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
私の意見では、GUI で実行する場合、特に関係するものはないので、上記のチェックで追加したものはすべてラップする必要があります。