peringatan: pengeditan baris tidak diaktifkan

21

Saya menemukan perintah yang membantu ini bind -x '"\C-r"':resetuntuk menghapus terminal tetapi saya ingin membuat skrip bash sederhana:

#!/bin/bash
bind -x '"\C-r"':reset

keluaran:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled

Bisakah seseorang tolong jelaskan:

  1. Bagaimana saya bisa memperbaikinya?
  2. Apa warning: line editing not enabledartinya
Alfred
sumber
Saya memperbaiki ini sudah menggunakan echo -e '\0033\0143'berkat superuser.com/questions/122911/bash-reset-and-clear-commands/… , tapi saya masih ingin tahu apa artinya kesalahan ini dan bagaimana cara memperbaikinya. Terimakasih banyak.
Alfred
@squircle terima kasih atas peningkatan yang baik. Mungkin Anda juga tahu jawaban atas pertanyaan saya: P?
Alfred
4
Sekadar catatan (karena ini belum benar-benar dijawab): Anda mendapatkan "pengeditan baris tidak diaktifkan", karena di bash yang muncul ketika Anda menjalankan skrip Anda itu hanya tidak diaktifkan dan Anda harus melakukannya sendiri, .eg dengan memasukkan set -o emacsatau set -o vike dalam skrip Anda (sebelum bind, tentu saja).
Elmar Zander

Jawaban:

10

Anda perlu sumber skrip itu. Lakukan . ./bindatau source ./binduntuk membuat ikatan kunci itu aktif di sesi saat ini.

Menjalankannya secara normal, ia tidak memiliki terminal sehingga memberi Anda pesan kesalahan itu. Juga, jika itu berfungsi, itu hanya akan aktif selama durasi skrip.

Jika Anda ingin agar pengikat tombol tetap ada, tambahkan perintah itu ke ~/.bashrc.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
1. Saya tahu tentang kegigihan. 2. Contoh Anda berhasil, tetapi menambah kompleksitas menjalankan perintah (menurut saya) Saya kira saya sekarang tahu ini, tetapi saya ingin memiliki file bash sederhana yang dapat saya jalankan tanpa ini source.
Alfred
2
@alfredwesterveld: Jika Anda tidak ingin ikatan dimuat setiap kali Anda memulai shell, tetapi Anda ingin dapat mengaktifkannya kapan saja tanpa harus menggunakan sourceatau dot ( .), tambahkan fungsi ke ~/.bashrc: Anda : rbind () { bind -x '"\C-r"':reset; }Anda dapat masuk rbinddengan itu sendiri sebagai perintah dan mengikat akan diaktifkan.
Dijeda sampai pemberitahuan lebih lanjut.
9

Saya punya pesan serupa tetapi milik saya berasal dari skrip yang dijalankan di luar shell interaktif (login); itu adalah skrip shell yang dijalankan melalui skrip CGI. Pesan saya adalah:

/home/richard/.bash_profile: line 4: bind: warning: line editing not enabled

dan meskipun sebenarnya bukan pada baris 4, satu-satunya binddalam file itu adalah:

bind 'set completion-ignore-case on'

yang tentu saja hanya masuk akal jika pengeditan baris diaktifkan, yaitu jika itu shell interaktif.

Richard Wiseman
sumber