Mam alias, który przekazuje niektóre parametry do narzędzia, którego często używam. Czasami biegam jak ja, czasem pod sudo. Niestety, sudo nie rozpoznaje aliasu.
Czy ktoś ma podpowiedź, jak przekazać alias?
W tym przypadku mam kilka opcji dla Perla podczas debugowania:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Czasami muszę debugować moje narzędzia jako root, więc zamiast uruchamiać:
pd ./mytool --some params
Muszę uruchomić to pod sudo. Próbowałem na wiele sposobów:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
Miałem nadzieję na dobry, zwięzły sposób, aby upewnić się, że mój obecny alias pd został w pełni wykorzystany (na wypadek, gdy będę musiał go później poprawić), chociaż niektóre moje próby wcale nie były zwięzłe. Ostatnim rozwiązaniem jest umieszczenie go w skrypcie powłoki i umieszczenie go gdzieś, co sudo będzie w stanie znaleźć. Ale aliasy są czasem bardzo przydatne, więc jest to ostateczność.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.
sudo
ponownie, a chcąc utrzymać tęsudo
-passthrough tricka w tym samym czasie. Nawet to można zrobić: aby ponownie użyć opcji, użyj\sudo
. Ukośnik odwróci alias. (Wielu zdaje się o tym nie wiedzieć). W ten sposób możesz ( niebezpieczeństwo! ) Nawet usuwać pliki bez żadnego ostrzeżenia, zastępującalias rm='rm -i'
typowo określone w.bash-aliases
, po prostu przez wpisanie\rm file-to-delete
.Nie jestem do końca pewien, co próbujesz zrobić. Widzę dwa sposoby:
Właściwy sposób
alias pd='sudo perl -Ilib -I/home/myuser/lib -d'
Następnie wykonanie
pd ./mytool
spowoduje wykonanie polecenia debugowania jako root, ale nadal zachowuje zalety sudo (ścieżka audytu, nie działa z powłoki roota).Przykład:
Łatwa droga
Dodaj aliasy do roota
.bashrc
i używaj,sudo -i
gdy sudo chcesz rootować.źródło
Wystarczy mieć dwa aliasy i użyć zmiennej
Nie widzę powodu, dla którego używam
awk
lubcut
chyba, że ma to być tylko jeden podstawowy alias zdefiniowany, aby ułatwić modyfikację. W takim przypadku działa to:Oto uproszczona funkcja tworzenia par aliasów, takich jak powyższa:
Używać:
Teraz masz
pd
ispd
plusct
isct
.źródło
Chciałbym oznaczyć dwie odpowiedzi jako „poprawne”. Łącząc właściwą drogę z wnikliwego postu Insyte , z awk (lub wyciętym) rozwiązaniem Billa Weissa , wpadłem na to:
Teraz po prostu przejdę do funkcji powłoki w moim .bashrc lub coś, a następnie utworzę wersje „s” wszystkich moich aliasów, które chcę uruchamiać jako root.
Aktualizacja : niewielka modyfikacja uproszczonej funkcji Dennisa Williamsona , aby była nieco łatwiejsza w użyciu:
Oznacza to, że muszę po prostu wstawić „s” przed całym poleceniem. Zamiast:
Po prostu dodaję s z przodu.
I skończyłem. Jasne, komputer wykonuje trochę więcej pracy, ale po to jest komputer. :-)
Dzięki!
źródło
alias sudo="sudo "
działa idealnie.z http://www.shellperson.net/using-sudo-with-an-alias/
źródło
Czy nie byłoby łatwiej po prostu zhakować skrypt, który zawiera twoje opcje, a następnie umieścić go gdzieś w jednym z folderów, który jest ścieżką do zwykłego konta i roota? To naprawdę nie zajmie dużo scenariusza.
źródło
To trudne, ale działa tutaj:
źródło
Dodaj prefiks „sudo” do wybranych aliasów ORAZ poleceń w swoim stylu
~/.bashrc
:źródło
alias sudo="sudo "
jest łatwiej.Jak napisano kilka razy, zrób w '.bashrc':
alias sudo = 'sudo'
Powód, dla którego wyjaśniono to w „man bash” i „help alias”:
alias: alias [-p] [name [= wartość] ...] Zdefiniuj lub wyświetl aliasy.
źródło
Chcesz coś takiego:
źródło
bash -i
(i = Interactive) jest tylko wer. 4.0. Tak więc na starszym serwerze, na którym nadalbash
działa wersja v3, najprawdopodobniej zakończy się niepowodzeniem. Ale udowodnijcie, że się mylę, śmiało;)-i
jest powłoką Bourne'a, patrz: pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html#!/bin/bash -i
shebangiem, który najwyraźniej nie jest taki sam (?). Aby wyciąć długie opowiadanie, stosująchistory
wbash
skrypcie (a nie w linii poleceń „na żywo”) będzie wymagać od-i
opcji, które nie udało mi się dostać pracę na serwerze z „tylko”bash
v3 zainstalowany. I to jest fakt.Nie wiem, czy to najmądrzejsza rzecz na pudełku produkcyjnym, ale używam jej lokalnie
źródło
Czy możesz dodać alias do .bashrc roota lub po prostu uruchomić .bashrc przez sudo przed twoim poleceniem?
źródło