W przypadku prostych poleceń, np less
. Czy lepiej utworzyć alias lub wyeksportować opcje? Czy jest jakaś przewaga jednej nad drugą?
Na przykład, jeśli chcę less
zawsze używać -R
opcji wyświetlania nieprzetworzonych znaków, oba te rozwiązania działają:
export LESS='-R'
alias less='less -R'
Czy w przypadku takiego prostego przypadku jest jakaś przewaga jednego nad drugim? Jakieś scenariusze, w których jeden spowoduje problemy, a drugi nie?
Przeczytałem kilka stron info
i man
stron, a także googlowanie, ale nadal mam to.
less
możesz to zrobić za pomocąlesskey
)Odpowiedzi:
Jedną z różnic między nimi jest to, że aliasy są tylko funkcją powłoki. Zmienne środowiskowe są dziedziczone przez wszystkie podprocesy (chyba że zostały celowo wyczyszczone).
Zmienna środowiskowa będzie bardziej prawdopodobne, aby działać, nawet jeśli
less
jest uruchomiony pośrednio, na przykład za pośrednictwem innej powłoce (nptcsh
),man
,vim
,psql
, itd.źródło
bash -c 'alias ll="ls -l"; ll'
nie użyje aliasu.export LESS='-R'
w moim .zshrc, otwórz sesję zsh, a następnie przełącz się na bash w tej samej sesji (bez eksportu w .bashrc), zmienna środowiskowa będzie nadal ustawiona?Zależy to w dużej mierze od używanego narzędzia. Będą narzędzia, które pozwolą ci używać albo inne, które tylko jedno.
Istnieją polecenia, które są wywoływane przez innych i odczytują zmienne środowiskowe i akceptują te same przełączniki, ale dodanie do nich tego samego przełącznika jest kłopotliwe, podobnie jak kompilatory, ponieważ
make
tutaj świecą zmienne środowiskowe. Ustawiasz zmienną i zapominasz o niej. To także plus, że może być czasowy i pracować dla jednego polecenia.Podsumowując, jest to zbiór preferencji i najlepszych działań dla zadania, będą chwile, w których skonfigurowanie aliasu jest łatwiejsze i trwałe niż zmienna środowiskowa, a innym razem, gdy będziesz potrzebować szeregu narzędzi zachowujących się w taki sam sposób, w jaki chciałbyś kocham zmienne środowiskowe.
źródło