Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

sh_vimglob_func: echo "$1" is non-portable according to POSIX

Aperta Adatta ai principianti
#21,524 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c, shell

Direzione di ricerca

La stringa di comando shell sh_vimglob_func è definita in mch_expand_wildcards() in src/os_unix.c, e il diff della segnalazione mostra la chiamata a echo da sostituire. Prima riproduci il problema: crea un file chiamato -n con touch ./-n, avvia Vim ed esegui :echo glob('-{n,E}') per vedere il nome mancante. È completato quando glob restituisce -n e l'elenco dei file è corretto, verificato in una shell POSIX come dash e anche in bash.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
Steps to reproduce

Try in shell: touch ./-n
Then in vim: :echo glob('-{n,E}')
'-n' is not printed, only a new line.

Expected behaviour

Should work for all files.

Version of Vim

9.2.1178

Environment

Fedora 44

Logs and stack traces
Fix:

diff --git a/src/os_unix.c b/src/os_unix.c
index 9bbe7baf2..a54ba740c 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -7221,7 +7221,7 @@ mch_expand_wildcards(
     static int	did_find_nul = FALSE;
     int		ampersand = FALSE;
 				// vimglob() function to define for Posix shell
-    static string_T sh_vimglob_func = STR_LITERAL_INIT("vimglob() { while [ $# -ge 1 ]; do echo \"$1\"; shift; done }; vimglob >");
+    static string_T sh_vimglob_func = STR_LITERAL_INIT("vimglob() { while [ $# -ge 1 ]; do printf '%s\n' \"$1\"; shift; done }; vimglob >");
 				// vimglob() function with globstar setting enabled, only for bash >= 4.X
     static string_T sh_globstar_opt = STR_LITERAL_INIT("[[ ${BASH_VERSINFO[0]} -ge 4 ]] && shopt -s globstar; ");
Lingua principale
Vim Script
Stelle
41.2k
Fork
6.2k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di vim/vim

Tutte le issue di vim/vim

Issue simili

Altre issue su Operating Systems

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.