job.answiz.com

The functionality you are looking for is implemented in glibc. You can define a custom hosts file by setting the HOSTALIASES environment variable. The names in this file will be picked up by gethostbyname (see documentation).

Example (tested on Ubuntu 13.10):

$ echo 'g www.google.com' >> ~/.hosts
$ export HOSTALIASES=~/.hosts
$ wget g -O /dev/null

Some limitations:

  • HOSTALIASES only works for applications using getaddrinfo(3) or gethostbyname(3)
  • When setuid is used libc sanitizes the environment, which means that the HOSTALIASES setting is lost. ping is setuid root (because it needs to listen for ICMP packets), so HOSTALIASES will not work with ping unless you're already root before you call ping.
  • 2
Reply Report

For anything ssh based (including rsync over ssh) you can add entries to your ~/.ssh/config file

e.g.

Host myhost
    Hostname myhost.example.com

Then ssh myhost will connect you to myhost.example.com

  • 4
Reply Report