Il post su Autojump è piaciuto. E pensare che l’idea ce l’avevo da parecchio tempo, non so quante volte ho cominciato a scriverci e poi lo abbandonavo perché non mi piaceva 🙂
OK, postandolo ci sono stati i commenti con suggerimenti e precisazioni. E adesso è tutto molto più chiaro. Vorrei allora chiudere l’argomento con questa breve nota, approfittando della vostra pazienza 😉
Il suggerimento di Marco Delmastro (il suo blog, Borborigmi è über-yotta-mitico) di usare source funziona, da approfondire.
Il prof Lipari, glipari ha indicato il metodo usato da Autojump, un post di StackOverflow. Era stato glipari che mi aveva fatto conoscere Autojump e sospendere i miei tentativi di ricreare j con Linux.
Il commento di bit3lux / Luigi dà una soluzione che funziona ma “non è elegante“, come illustrato nel commento di glipari. Si vede che Luigi è troppo giovane: quando non c’era l’ambiente grafico ormai pervasivo il terminale era tutto per la shell. E potevi (OK, anche adesso) avviare una sub-shell digitando sh (non bash o csh, non usare mai quei nomi). Non so se il termine è corretto ma da noi si diceva che attivavi una sessione ospite. Con ctrl-D o exit uscivi da questa sub-shell e tornavi a quella precedente. Nulla vietava di annidare sub-shell per più livelli anche se 1) non so bene a cosa potesse servire; e 2) consumava memoria. Con tanti ctrl-D quanti erano i processi attivati tornavi alla shell originale; se ne battevi uno in più ti slogavi (c’era una variabile da settare per evitare che ciò avvenisse, la usavano solo i niubbi che allora si chiamavano pivelli).
Autojump di Joël Schaerer è perfetto, auto impara quali sono le directory che vengono usate e dimentica quelle vecchie; usa un algoritmo per indovinare quello che vuoi impiegando una regular expression (RegEx, RE) da paura. E poi Python è un linguaggio di script trendy e simpa (i francesi come Joël dicono così). Certo, seguendo l’indicazione di Marco si potrebbe fare a meno di Python, magari coinvolgendo Perl per la RE 😉
Non credo che mi avventurerò per questa strada ma per source ho provato a googlare un pochino. Ecco cosa ho scovato.
source
Avendo a disposizione il SysV Command Reference di Apollo, novembre 1989 ho voluto indagare se source c’era già in Unix-SysV. Pare di no. Il manuale ha la Section 1 –quella che m’interessa– e la Section 6 –games. I comandi sono in ordine alfabetico. A p.1-511 (si apre automaticamente lì) inizia SH(1), la Bourne shell, occupa le pagine fino a 1-523 compresa. Rimanda a pagine di SysV Programmer’s Reference che non ho. Non cita source.
CSH(1), la c-shell inizia a p. 1-91 e arriva fino a p. 1-115 compresa.
E c’è source, a p. 1-108, copio:
source name
Read commands from name. You may nest source commands, but if you nest too many deeply, the shell may run out of file descriptors. An error in a source at any level terminates all nested source commands.source -h name
Place commands in the history list without executing them. Normally, input during source commands is not placed on the history list.
KSH(1), la Korn shell è descritta nelle pagine da 1-295 a 1-323. Ebbene sì Apollo permetteva di usare la shell che volevi, bash non c’era ancora. Nessun riferimento a source.
Idea per il futuro: se a qualcuno interessa potrei mettere le scansioni di queste pagine e magari incorrere nelle ire di HP.
A p. 1-528 c’è SORT(1) e a p. 1-529 SPELL(1) che continua anche sulla successiva, niente source quindi.
OK! source è nato in BSD e SysV non ce l’aveva. Mistero il motivo per cui tutti (a quanto pare) usassero la Bourne shell quando c’era la Korn, più nuova, almeno a giudicare da com’è ridotto il manuale.
E per Linux? Tanti, credo, sanno che si può usare source quando si modifica ~/.bashrc ma solo quello. Tranne Marco 😀 e pochi altri.
La googlata per source è stata fruttuosa, ecco
http://www.cyberciti.biz/faq/linux-bsd-unix-source-command/
nixCraft è un sito da bookmarkare, imho. Toh! lo dice anche qui che è BSD.
http://bash.cyberciti.biz/guide/Source_command
stesso sito, altra pagina, Linux (credo).
http://webtools.live2support.com/linux/period.php
Web Tools, lo sapete che source può essere scritta come . (punto, dot)? Da bookmarkare anche questo, sempre imho.
http://ss64.com/bash/
An A-Z Index of the Bash command line for Linux. Già che ci siete bookmarkate anche questo.
Ah questa non la sapevo:
Visto: source – Esegue comandi da un file nella shell corrente.
Nella shell corrente.
Quante cose ci sono da imparare! E quante cose so di non sapere (cit.).
Riuscirò mai a diventare quasi-geek o rimarrò per sempre un aspirante-geek? 😉