2017-02-15 16 views
0

私はKali Linuxのローリングリリースを実行しており、起動時にrc.localによって実行されるスクリプトの作成を開始しました。コンピュータのホスト名。rc.localは起動前にBashスクリプトが終了するのを待つことができます

rc.localに:

#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing. 

/root/hostnameBoot 

exit 0 

hostnameBootスクリプト:

#!/bin/bash 
# /etc/init.d/hostnameBoot 

# Solution Added 
exec < /dev/tty0 

echo "Enter desired hostname:" 
read hostname 
echo "New hostname: $hostname" 

#exit 0 

あなたが見ることができるように、現在hostnameBootは、新しいホスト名を入力するようユーザーに促し、その後、ユーザーにホスト名を返します。

起動時にrc.localがスクリプトを実行しますが、新しいホスト名を入力するようにユーザに求めません。

サンプルブート出力:

- misc boot info - 
Enter desired hostname: 
New hostname: 

サンプルブート出力を一度に表示し、ユーザーが新しいホスト名を入力することはできません。回線が表示されると、システムはログイン画面に進みます。システムの望ましい動作により、ユーザーは新しいホスト名を入力してから、以前に入力した入力を提示することができます。

注:スクリプトは最終製品ではなく、rc.localを使用してスクリプトをトリガする概念の証明にすぎません。

+0

これはおそらく[unix.se]に適しています。 –

答えて

0

rc.localを含むブートスクリプトは通常、対話モード(つまり、ユーザーがデータを入力できる完全に機能する端末)では実行されません。それらの出力はコンソールにリダイレクトされます(ブートメッセージを見ることができます)が、入力はおそらく/dev/nullです(したがって、readはすぐに何も読み取らずに戻ります)。

固定端末を常に使用するように手動でリダイレクトするか(たとえばread </dev/tty0)、ユーザー入力を行うために仮想コンソールを開く(例:openvt -s -w /root/hostnameBoot)必要があります。詳細は、this answerを参照してください。

+0

ブート中に何が起こっているのか説明していただきありがとうございます。それはシステムをもう少し理解するのに役立ちます。解決方法:新しい編集で示されているように、exec Yegnaro

関連する問題