Saat ini saya PS1
mengatur bash saya untuk sesuatu seperti ini:
PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Bagaimana saya bisa membuatnya menunjukkan jalur absolut alih-alih yang relatif (misalnya, /home/dave/dir
bukan ~/dir
)?
/home/dave/dir
dan~/dir
keduanya path absolut, yang kedua menggunakan singkatan untuk direktori home Anda. Path relatif adalah path yang relatif terhadap direktori Anda saat ini (misalnya../dir
) daripada memulai pada root (/
).\u@\H[\w]:~\$
makesuser@host[~/path]:~$
Jawaban:
Cukup ganti
\w
dengan\$PWD
:Pokoknya jika Anda keberatan sedikit tip, saya akan menulis sesuatu seperti:
sumber
$PWD
dievaluasi pada saat penugasanPS1
, bukan pada setiap panggilan. Namun , jika Anda keluar dari tanda dolar, itu akan berhasil -\$PWD
. Dengan ini, tanda dolar adalah tanda dolar pada saat penugasan dan evaluasi variabel terjadi pada setiap prompt. Memberi +1 kepada Anda.Taruh di rumahmu
.bashrc
sumber
\w
memberikan path lengkap sementara\W
hanya memberikan direktori. Lihat "Bash Prompt Escape Sequences"di ps1 bash; -W harus relatif, dan -w absolut, jadi di atas Anda sudah memiliki absolut ?!
http://wiki.archlinux.org/index.php/Color_Bash_Prompt
sumber
W
hanya menampilkan nama direktori saat ini,w
menunjukkan jalur lengkap, tetapi masih menggunakan jalur relatif.Humm ~ / dir adalah path absolut tetapi menggunakan "jalan pintas". Sebagai contoh, jika Anda melakukan
cd /usr/local
prompt Anda kemungkinan besar akan menampilkan path lengkap dari / usr / local. Jadi, Anda sudah memiliki path lengkap :-)Tapi mungkin pertanyaan Anda yang benar adalah bagaimana menampilkan path lengkap tanpa pintasan seperti ~?
Namun, saya tidak tahu jawaban untuk yang itu dan melihat pria itu, sepertinya ada (setidaknya didokumentasikan).
sumber
Jalankan
pwd
alih-alih menggunakan\W
.Versi sederhana:
Menggunakan ini dalam kode Anda:
sumber