2012-11-06 12 views

Odpowiedz

24

To, czego naprawdę chcesz, to funkcja zamiast aliasu.

pwd_alias() { 
    echo "$PWD" 
} 

Aliasy nie robią nic więcej niż zastępowanie tekstu. Wszystko ze złożonością wymaga funkcji.

+0

Gdzie umieścisz tę funkcję, aby pracować jako alias? W pliku w/usr/local/bin, lub możesz to tak ustawić w .bashrc? – dgilperez

+2

@dgilperez '~/.bashrc' jest w porządku. – jordanm

+0

Ta składnia funkcji nie działa dla mnie. Musiałem użyć 'funkcja pwd_alias { echo" $ PWD " }' –

0

Nie sądzę, aby można było zmienić ocenę podczas uruchamiania powłoki. Ponieważ procesy tworzenia aliasu są uruchamiane podczas startu powłoki, wówczas jest oceniany pwd. Możesz łatwo zmienić alias, aby po prostu uruchamiać pwd bez tylnych tyknięć jako wyjść pwd bez potrzeby echa. Prostym sposobem rozwiązania tego problemu jest zmiana użycia aliasu do skryptu powłoki na ścieżce, jeśli nie chcesz zmieniać aliasu.

#!/bin/bash 
pwd 
2

Jak powiedział jordanm, aliasy nic nie robią, tylko zastępują tekst.
Jeśli chcesz, aby argument echo był wynikiem pwd rozwiniętym przez bash, to nie rozumiem twojego pytania.
Jeśli chcesz argument echo być `pwd` z małe cudzysłowy utrzymane, to rzeczywiście możliwe, na przykład:

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

Tak, jeśli zamiast echo masz coś, co robi backquote ekspansję na własną rękę runtime, może tego właśnie chcesz.

+3

Powyższe nie działa, musisz usunąć pojedyncze cudzysłowy: 'alias a =" echo \\ 'pwd \\' "' – Anake

+0

Tak, to działa tak jak zamierzałem, kiedy wywołujesz powłokę, echo 'pwd' z zachowanymi cytatami. –

Powiązane problemy