Saya ingin menampilkan jalur saat ini di sh prompt (bukan bash shell), yang saat ini hanya menunjukkan "#", saya mencoba memperkenalkan ini
env PS1="$(whoami)@$(hostname):$(pwd)"
dan
set PS1="$(whoami)@$(hostname):$(pwd)"
di /etc/profile
.
Namun yang jelas ini tidak menyegarkan ketika direktori diubah atau pengguna berubah. Tolong sarankan cara untuk membuat ini dinamis.
$()
menjalankan program terpisah; akan lebih cepat menggunakan variabel lingkungan, seperti$LOGNAME
,$HOSTNAME
dan$PWD
sebagai gantinya.Jawaban:
Pergantian perintah dalam tanda kutip ganda
"
dapat diperluas segera. Bukan itu yang Anda inginkan untuk prompt Anda. Kutipan tunggal'
akan mempertahankan substitusi$PS1
yang kemudian hanya diperluas ketika menampilkan prompt. Karenanya ini harus bekerja:Jika Anda ingin tanda dolar yang biasa dan spasi di akhir prompt Anda, cukup tambahkan
$
di akhir (tidak perlu melarikan diri):export PS1='$(whoami)@$(hostname):$(pwd)$ '
sumber
export PS1='$(whoami)@$(hostname):$(pwd)$'
saya menyimpan perubahan s ke/etc/profile
. Terima kasih.set
bekerja untuk saya (tapi saya tidak punya penduduk aslish
). Tapi saya akan mengubahnyaexport
untuk mematuhi pengaturan Anda./etc/profile
(lihat pertanyaan) atau~/.profile
?!foo@localhost:/home/fools -la
saat menggunakanls -la
.sumber
\u@\h:\w>
sebagai prompt perintah sayaBusyBox v1.19.4 built-in shell (ash)
.Perintah ini bekerja untuk saya.
Di mana
\ u = nama pengguna
\ h = nama host
\ W Nama folder ini (bukan path lengkap)
sumber
Orang mungkin mempertimbangkan untuk mucikari prompt dengan menambahkan beberapa warna. Contohnya:
sumber
Satu jawaban adalah menggunakan tanda kutip tunggal dan bukan tanda kutip ganda, namun, itu bukan jawaban yang sepenuhnya benar. Yang benar-benar ingin Anda lakukan adalah menunda evaluasi kode di dalam prompt Anda hingga prompt tersebut digunakan.
set prompt ke direktori kerja pada set perintah.
TIDAK mengembangkan $ (pwd). Sebagai gantinya, PS1 diatur ke nilai literal dari $ (pwd).
Uji / Pahami ini dengan menjalankan:
. Jika Anda melihat string: $ pwd, prompt Anda berfungsi. Jika Anda melihat path literal, prompt rusak karena telah ditetapkan secara statis
sumber
Gunakan perintah di bawah ini untuk mengatur seperti di cpanel.
export PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
sumber