自分のコンピュータのログインメッセージを作成しており、/etc/bashrc
コンピュータに挨拶してコンピュータ名を表示したいと思います。
これは私のコードです。
# (system stuff here)
echo "Welcome, $(whoami)."
どんなユーザーでも使用すると、login
私が期待するものを得ることができますWelcome, avgjoe
。
しかし、出力したいですWelcome, avgjoe, to Tower of Nix
。私のコンピュータ名は、(システム環境設定を介して)「Tower of Nix」に設定されています。
では、コンピュータをハードコードせずにコンピュータ名をどのように知ることができますかecho "Welcome, $(whoami), to Tower of Nix."
?
私はこれを試しましたが、hostname
何も出力しません192.168.2.13
。
scutil --get ComputerName
私が要求したものを正確に実行することがわかりましたが、Tower of Nix
マニュアルページを見ると次のようにscutil
指定されています。
歴史
この
scutil
コマンドは Mac OS X 公開ベータ版に表示されます。
したがって、Linux、* BSDなど、すべてのオペレーティングシステムでは機能しない可能性があります。
私の質問:すべてのコンピュータからコンピュータ名を取得する方法(またはほぼすべて)UNIXの派生物ですか?
答え1
すべてではありませんが、多くのUnixシリーズシステムにこのオプションがuname
あります。n
uname -n
答え2
Mac OS Xは、コンピュータのIPホスト名とはまったく異なる名前を保存して検索できる数少ないUnixシリーズシステムの1つです。への呼び出しを特別に処理することをお勧めしますscutil
。失敗した場合は、より標準的な方法に戻ってくださいhostname
。
echo "Welcome, $(whoami), to $(scutil --get ComputerName 2>/dev/null || hostname)."
答え3
GNU/Linux のホスト名はファイルにあります。たとえば、.slackwareの行を変更してSlackwareでホスト名を編集できます/etc/HOSTNAME
。
私の提案は、このファイルをbashrcのコマンドにリンクすることです。システムにホスト名ファイルがない場合は、/etc
簡単に作成できます。または、変数がログインしている人の名前で埋められているので、$USER
notを使用できます。whoami
USER
コマンドは次のとおりです。
echo "Welcome, $USER, to `cat /etc/HOSTNAME`"