What is the Solaris equivalent of the Linux hostname -f command? On Solaris, when I type hostname, I receive the short name but I need to get the FQDN.

Typing hostname -f sets the short name to be "-f", and the manpage for hostname is pitiful.

  • /etc/nodename just lists shortname for the server. The /etc/hostname.* files are all giving me an error when I try to cat them :(
    – Matthew
    Nov 18, 2011 at 18:48
  • What errors do you get with /etc/hostname.if? If those are corrupted then you have bigger problems. Dec 6, 2011 at 20:27
  • This question has also been asked before. Here's the previous answer: serverfault.com/questions/229706/… Mar 20, 2013 at 2:02

3 Answers 3


This is likely to work:

perl -mNet::Domain -e 'print Net::Domain::hostfqdn(), "\n"'

but it's not guaranteed. You can view the module source:

perldoc -m Net::Domain

to see how it works (if you know Perl well enough).


If you are on a system that the DNS knows about, you could try this:

bash-3.00# nslookup `hostname` | grep 'Name:' | awk '{print $2}'

or, as suggested by a commenter, use "host" instead of nslookup:

host $(hostname) | cut -d" " -f1

I tested this successfully on Linux, Solaris, AIX, and HP-UX.

  • nslookup has been deprecated for a long time. host or dig are preferred and would involve fewer pipes: host $(hostname) | cut -d" " -f1 Dec 6, 2011 at 20:26
  • @JamesO'Gorman nslookup is part of the POSIX standard, only a hairbrain OS wouldn't include it these days.
    – Chris S
    Mar 20, 2013 at 4:04
  • @ChrisS True, and nslookup generally still comes with host and dig in the BIND utilities package (OS/distro dependent) but the output from dig is BIND zonefile-compatible and host is slightly easier to parse, therefore I'd say it's better to use host or dig if you can. Mar 21, 2013 at 9:03
check-hostname | awk '{ print $NF }'

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .