Kami memiliki lingkungan terpisah di tempat kerja saya untuk pengembangan, pengujian, integrasi, dan pementasan.
Di dalam envs tersebut, kami telah membebani nama host dalam DNS - misalnya di lingkungan dev, mesin web utama disebut web1.dev.example.com
, dan di lingkungan pengujian, mesin web primer adalah web1.test.example.com
.
Untuk membedakan antara mesin di lingkungan yang berbeda, saya ingin menyesuaikan permintaan bash untuk menampilkan FQDN daripada hanya nama host. Baik dan bagus; Aku harus bisa menggantikan \h
dengan \H
di $PS1
, kan? Hmm. Mereka menunjukkan hal yang sama persis.
me@web1:~$ hostname
web1
me@web1:~$ hostname -f
web1.dev.example.com
me@web1:~$ export PS1="\[\u@\h: \w\]\$ "
me@web1: ~$ export PS1="\[\u@\H: \w\]\$ "
me@web1: ~$
Di /etc/hostname
, saya hanya punya nama host ( web1
). hostname
dan hostname -f
keduanya mengembalikan hasil yang benar ("web1" dan "web1.test.example.com",), dan saya mendapatkan entri yang benar di /etc/hosts
.
Apa yang menyebabkannya?
Ini adalah host Ubuntu 10,04, jika itu membuat perbedaan.
Ada kegilaan gila tentang nama host, pendek dan panjang, dan melakukannya dengan benar sepanjang waktu itu sulit - jadi saya menyerah dan membuat semuanya menggunakan FQDN sebagai nama host ...
Saya melakukan hal yang sama seperti Anda di lingkungan saya, tetapi saya menebang FQDN di prompt karena saya tahu situs apa yang saya gunakan, dan itu menghemat ruang. Saya juga memberi kode warna pada prompt saya berdasarkan lingkungan jadi saya mendapat peringatan yang lebih baik ketika saya melakukan sesuatu di suatu tempat "penting". Saya juga memisahkan path dari yang lain, agar mudah menyalin-pasta pwd. Cuplikan dari stok saya
/etc/profile
:Dan, sejauh "kejelekan" terjadi, siapa yang peduli seperti apa kode untuk menampilkan prompt? Lagipula, ini hanya kode tulis.
sumber
Itu adalah bug dengan cara Ubuntu mengelola / etc / hostname.
Bug yang diajukan: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1276796
sumber