2012-11-06 5 views

risposta

24

Quello che vuoi veramente è una funzione, invece di un alias.

pwd_alias() { 
    echo "$PWD" 
} 

Gli alias non fanno altro che sostituire il testo. Qualsiasi cosa con complessità richiede una funzione.

+0

Dove si inserisce questa funzione per funzionare come alias? In un file in/usr/local/bin, o puoi metterlo così in .bashrc? – dgilperez

+2

@dgilperez '~/.bashrc' va bene. – jordanm

+0

Questa sintassi della funzione non ha funzionato per me. Ho dovuto usare la funzione 'pwd_alias { echo" $ PWD " }' –

0

Non credo che si possa modificare la valutazione dall'avvio della shell. Poiché i processi di creazione dell'alias vengono eseguiti all'inizio della shell, viene valutato il valore pwd. Puoi semplicemente cambiare l'alias per eseguire semplicemente pwd senza i tick posteriori come pwd uscite senza la necessità di echo. Un modo semplice per risolvere questo è passare dall'utilizzo di un alias a uno script di shell nel percorso, se non si desidera passare da un alias.

#!/bin/bash 
pwd 
2

Come ha detto Jordan, gli alias non fanno altro che sostituire il testo.
Se vuoi che l'argomento di echo sia l'output di pwd espanso da bash, allora non capisco la tua domanda.
Se si desidera che l'argomento di eco di essere `pwd` con gli apici mantenuti, è infatti possibile, ad esempio:

alias a="echo '\`pwd\`'" 

Quindi, se invece di eco avete qualcosa che fa l'espansione backquote nel proprio runtime, forse è quello che vuoi.

+3

Quanto sopra non funziona, è necessario rimuovere le virgolette singole: 'alias a =" echo \\ 'pwd \\' "' – Anake

+0

Sì, funziona come intendevo, quando invochi una shell fa eco a 'pwd' con i backquote conservati. –

Problemi correlati