題:
OS X計算機名稱與終端上顯示的內容不匹配
Travis Nelson
2011-11-08 11:58:20 UTC
view on stackexchange narkive permalink

My computer name in System Preferences > Sharing is set to "archos", but is showing as "iphone" on Terminal. It just started doing this after I loaded Xcode for doing iPhone development:

Last login: Mon Nov  7 14:46:55 on ttys001iphone:~ travis$ 

Any ideas what could be causing this?

輸入echo $ HOSTNAME會得到什麼
這很奇怪...我正在為echo $ HOSTNAME獲取“ archos.local”。我在辦公室時進行了初始寫入,但是在家庭網絡中,它已恢復正常。我想知道這是否與我的工作網絡有關?
十 答案:
l'L'l
2011-11-08 16:49:52 UTC
view on stackexchange narkive permalink

發生這種情況非常正常;當您遠程登錄Terminal時,bash會進行反向DNS查找。只有在您要連接的網絡上未指定主機名並且DHCP服務器沒有答复,或者對遠程DNS服務器的反向查找無法解決的情況下,它才會是相同的。

您可以通過在終端中使用以下命令輕鬆地覆蓋默認設置:

 #sudo scutil --set HostName archos  

您可以通過以下方法進行檢查:使用:

 #nslookup nn.nn.nn.nn(或)#host nn.nn.nn.nn  

(其中nn表示Mac的ip地址)

您怎麼能撤消呢?
@Gio從/Library/Preferences/SystemConfiguration/preferences.plist中的System下刪除HostName項。請參閱[此答案](http://apple.stackexchange.com/questions/88463/terminal-bash-name/88466#88466)。
@Gio: @Lauri's帖子具有出色的背景信息,但是如果您想要快捷方式:刪除,請運行`sudo scutil --set HostName'。
建議不要設置“主機名”,因為它會創建一個單獨的值,即使您稍後嘗試通過“系統偏好設置”>“共享”來更改主機名,該值也將保持不變。相比之下,設置LocalHostName會更新相同的值,並且通常也會由shell和hostname來獲取(ComputerName值應一併更新)。還是設置`HostName`行為不同,這在這裡是有利的?
我的解決方法是刪除路由器上的dhcp條目,然後重新啟動(路由器)。它為我的Mac緩存使用了一個舊名稱(好吧,實際上我在dhcp設置中有固定的分配)。路由器重啟後,我的Mac明顯主機名(例如在bash提示符下)與我在Preferences-> Sharing中設置的主機名匹配,可以在router.PS的dhcp顯示中看到註冊的新名稱。這種差異僅在安裝優勝美地之後才發生。這是一個明智的改變,但會使人們感到困惑。
我相信您會希望將主機名設置為與“系統偏好設置”>“共享”>“本地網絡上的計算機可以通過以下地址訪問您的計算機:XXX.local”的名稱相匹配(例如:--set HostName'XXX.local'),否則某些反向查找可能會失敗。
測試主機名的另一個是`hostname -f`。
我在兩台機器上遇到了這種困難,下面的J.Hoover的答案以及上面的mklement0的評論中提出的想法都行不通。即,你們兩個都建議只更改LocalHostName和ComputerName,但是,更改它們永遠不會更改終端以反映系統首選項中指定的計算機名。我認為在我的情況下,這是因為兩台計算機都是Time Machine備份,並且儘管我在以後重命名,但它們保留了舊映像中的本地存儲憑據。只有HostName為我工作。僅供參考。
Jeffrey J. Hoover
2012-06-06 22:23:49 UTC
view on stackexchange narkive permalink

您可能還想使用scutil命令更改其他一些內容:

  sudo scutil --set ComputerName“ newname” sudo scutil --set LocalHostName“ newname” sudo scutil --set主機名“新名稱”  
通過在“系統偏好設置”->“共享”中更改名稱,然後使用“ scutil”設置“主機名”,“計算機名”和“本地主機名”都已經為我設置了新名稱(在Mavericks中)。很高興知道這些其他設置是否存在。
-1
就我而言,我的LocalHostName值不正確。運行`sudo scutil --set LocalHostName'刪除了LocalHostName,現在我的提示是使用ComputerName,它具有正確的值。
mklement0
2014-05-05 09:47:03 UTC
view on stackexchange narkive permalink

有兩個潛在的原因可能是外殼程序( $ HOSTNAME 變量, $ PS1 中的'\ h')和 hostname 實用程序來報告與系統偏好設置>共享中顯示的主機名不同的主機名:

  • sudo scutil --set HostName newName 用於永久更改主機名-不幸的是,此值與系統偏好設置在幕後設置的 LocalHostName 無關-偶儘管 man hostname 建議使用此方法,但出於這個原因,請勿使用運行 sudo scutil --set HostName” 以將其刪除,此時應再次報告 LocalHostName ;有關背景,請參閱@Lauri Ranta的此帖子

  • [更新:從OSX 10.10開始,以下內容不再適用]如果您的 / etc / hosts 文件中的條目與您計算機的IP地址匹配,則將報告條目的名稱。

僅當以上兩個都不成立時,shell和 hostname 才會反映通過系統偏好設置設置的值。


如果要從外殼更改主機名,同時運行以下命令:

  • sudo scutil --set LocalHostName <newName>
  • sudo scutil --set ComputerName <newFriendlyName>

其中 <newFriendlyName> 可以是更友好的版本(空格,標點符號) <newName> 的名稱(僅字母數字和破折號)。

不幸的是,就我而言,僅設置這兩個似乎還不夠:https://gist.github.com/rdp/71d5368087b94b5ea55a
@rogerdpack:並且您已經首先運行了sudo scutil --set HostName,並確保在/ etc / hosts中沒有條目? `scutil --get HostName`應該報告`Hostname:not set`。
是的`scutil --get HostNameHostName:not set` / etc / hosts看起來不錯...
@rogerdpack:愚蠢的問題:您的`PS1`變量恰好沒有_hard-coded_主機名,而不是使用\ h,不是嗎?順便說一句:從OSX 10.10起,不再參考`/ etc / hosts`(我已經更新了答案)。
似乎並沒有回顯$ PS1 \ h:\ W \ u \ $`我的DNS系統比正常情況更混亂:)
美麗。再次刪除主機名(通過按您建議的那樣將其設置為空字符串:`sudo scutil --set HostName”),可以使OS X將計算機名映射到其IP地址(例如,現在可以使用ping `)。
Danger14
2013-05-09 09:32:11 UTC
view on stackexchange narkive permalink

除了 Jeffrey J. Hoover的技巧(上)

我還要添加以下兩個步驟:

  • 刷新DNS通過鍵入以下內容進行緩存: dscacheutil -flushcache
  • 重新啟動Mac。
user67806
2014-01-18 04:49:38 UTC
view on stackexchange narkive permalink

我同意杰弗裡·胡佛(Jeffrey Hoover)的小費是正確的答案。刷新DNS緩存並重新啟動Mac也是一個不錯的步驟。這是Jeff Hoover的回复的變體:

  sudo -iPassword:for HostName ComputerName LocalHostName中的n;做scutil --set $ n new_hostnamedoneexit  
您缺少`-`:必須將其--set置為有效。另外,正如我在Jeff的回答中評論的那樣:最好不要設置`HostName`。
Terry Bu
2015-02-18 01:29:56 UTC
view on stackexchange narkive permalink

系統偏好設置->共享->計算機名稱->將其設置為任何值

,然後重新啟動計算機。無需控制台命令。適用於OS X 10.10.2

在10.14.6上,我遇到了這樣一種情況,即按我希望的方式設置了“共享”->“計算機名”,但“主機名”返回了“ MacBook-Pro”。我什至更改了它,但仍然有問題。我從來沒有見過這個問題。`scutil`命令對我有用。我想知道您應該通過GUI界面在哪裡/如何做。
Quanlong
2015-12-03 10:47:07 UTC
view on stackexchange narkive permalink

使用此

  sudo systemsetup -setcomputername $ name  
rogerdpack
2014-12-20 01:53:05 UTC
view on stackexchange narkive permalink

如一個單獨的答案中所述,另一種選擇是覆蓋默認的PS1提示符,例如執行以下行(或將其添加到〜/ .bash_profile文件中):

  $ PS1 =“ $(scutil --get ComputerName):\ W \ u \\ $”  

引用:

https://superuser.com/ a / 414903/39364

http://www.cnet.com/news/keep-your-command-prompt-host-name-static-in-os-x -and-other-unix-systems /

Magnus Gustavsson
2015-03-17 16:21:06 UTC
view on stackexchange narkive permalink

我有一個問題,只有外殼本身(在我的情況下為 zsh )無法顯示正確的計算機名稱。只需重新啟動外殼即可解決該問題:

  exec / bin / zsh  
noun
2015-12-12 07:15:31 UTC
view on stackexchange narkive permalink

除了上一個答案外,請記住,您可以在路由器中使用靜態地址。您必須輸入網卡的靜態IP和MAC地址,然後為其設置一個名稱。主機名將自動更新為指定的名稱。就是這樣。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...