Pada salah satu server saya, promptnya adalah [user @ host path] ... dan saya benar-benar dapat menekan "tab" untuk mengisi path secara otomatis.
Tetapi pada server Ubuntu baru saya, itu hanya tanda dolar?
Pada salah satu server saya, promptnya adalah [user @ host path] ... dan saya benar-benar dapat menekan "tab" untuk mengisi path secara otomatis.
Tetapi pada server Ubuntu baru saya, itu hanya tanda dolar?
Jawaban:
Karena Anda mengajukan dua pertanyaan, saya akan menjawab keduanya.
Karena Anda shell tidak mendukungnya, atau penyelesaian tab tidak diaktifkan.
Untuk mengatasinya, Anda harus terlebih dahulu menemukan apa cangkang Anda. Pada mesin yang cangkangnya Anda nikmati, jalankan
echo $SHELL
Anda mungkin melihat kesamaan /bin/bash
, atau sesuatu yang kurang umum seperti /bin/tcsh
, /bin/zsh
atau sesuatu yang lain sama sekali.
Sekarang, Anda dapat mengganti shell di mesin Ubuntu. Pada mesin itu, pertama-tama pastikan bahwa shell yang Anda inginkan ada. Karena shell mungkin tidak berada di lokasi yang sama di mesin Ubuntu seperti di yang lain, periksa lokasi dengan mengetik
which bash
Ini akan memberi Anda jalan shell yang Anda inginkan, sesuatu seperti /bin/bash
, /usr/bin/bash
, atau /usr/local/bin/bash
. Tentu saja, jika Anda ingin shell selain bash, Anda akan mengatakan which tcsh
, which zsh
, atau serupa.
Jika Anda tidak melihat jalur, tetapi sebaliknya melihat bash not found
, maka Anda harus menginstal paket yang sesuai, dan sekali lagi gunakan which
untuk mencari tahu di mana shell diinstal.
Dengan jalur shell yang Anda pilih, Anda akhirnya dapat mengubah shell Anda dengan menjalankan
chsh -s /bin/bash
mengganti /bin/bash
dengan apa pun jalan yang sesuai untuk shell pilihan Anda.
Karena variabel lingkungan prompt Anda $PS1
, $PS2
dan sebagainya. Hal-hal ini cenderung tidak mudah dibawa-bawa, jadi inilah beberapa tautan untuk calon yang mungkin:
bash
memiliki manual yang luas , dengan halaman pada Bash Variables (termasuk PS1
, & c) dan Mencetak Prompt (yang menjelaskan PROMPT_COMMAND
, nama panjang untuk PS1
). Tambahkan baris berikut ke~/.bashrc
export PS1='[\u@\h \w] '
tcsh
memiliki manual online (hanya halaman manualnya), dengan bagian tentang variabel lingkungan prompt . Tambahkan baris berikut ke~/.tcshrc
set prompt='[%n@%m %~] '
zsh
memiliki panduan pengguna , dengan panduan sederhana untuk prompt , serta manual , dengan referensi yang sangat rinci tentang Perluasan Prompt . Tambahkan baris berikut ke~/.zshrc
export PS1='[%n@%m %~] '
Bash bukan satu-satunya shell.
Masalah Anda bisa menjadi masalah sederhana karena tidak memiliki .profile atau .bashrc yang mengatur PS1, atau bisa jadi shell login Anda tidak bash sama sekali.
Bash menggunakan gnu readline
untuk hal-hal seperti penyelesaian tab. Ini adalah subjek yang rumit dan readline bahkan memiliki file konfigurasi per-pengguna sendiri.
Lihat man bash
, man sh
, dan man 3 readline
. Bash merespons --version
. Pada banyak sistem linux, /bin/sh
sebenarnya bukan bash, tetapi biasanya versi lumpuh ash
.
dash
bukan ash
? Saya pikir saya membaca sesuatu seperti ini
Saya kira, Anda tidak menggunakan bash, tetapi sh dan prompt Anda tidak diatur dengan benar (jika ini bahkan mungkin dengan sh).
Anda bisa mendapatkan shell Anda saat ini dengan mengetik: echo $SHELL
jika Anda ingin memulai bash, ketikkan saja bash
sh
. Echoing $SHELL
akan mencetak variabel lingkungan yang disebut SHELL
. Variabel lingkungan ini hanya menunjuk ke shell, dan hanya diset oleh bash. Ini kira-kira tidak berguna dalam menentukan shell mana yang sedang berjalan, karena hanya mengindikasikan, lemah, bahwa beberapa induk dari proses saat ini mungkin bash.
/bin/sh
, ya. Tapi saya tahu tidak ada shell yang namanya sh
. Saya bisa memikirkan ash
, ksh
, csh
, bash
, zsh
, dan tcsh
. Yang pertama adalah biasa / bin / sh di linux dan NetBSD, yang terakhir adalah shell FreeBSD biasa, dan yang lainnya adalah shell opsional. Banyak lingkungan desktop mengubah shell login pengguna menjadi bash sambil membiarkan / bin / sh sebagai abu.
sh
adalah shell Bourne. en.wikipedia.org/wiki/Bourne_shell Beberapa sistem (Solaris) masih dilengkapi dengan versi Bourne shell yang bukan hanya salinan dari salah satu implementasi ulang (abu, tanda hubung, bash, ksh, zsh).
Anda perlu mengatur variabel yang disebut PS1 pada salah satu skrip login Anda, misalnya / etc / profile atau ~ / .bashrc. Itu akan tergantung pada distribusi Anda.
Contoh: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
untuk mencetak nama direktori kerja saat ini. Dan apakah Anda mengatakan bahwa penyelesaian Tab juga tidak berfungsi? (Pada beberapa mesin yang saya gunakan, saya mendapatkan prompt pendek hanya jika saya login sebagai root, dan saya dengan senang hati meninggalkannya di tempat sebagai peringatan yang bagus. Seperti yang jarang terjadi, jika pernah, perlu login sebagai root: Anda tidak menggunakan root , kamu?)