Próbuję znaleźć miejsce, w którym określony alias
został zadeklarowany. Przeszukałem wszystkie zwykłe miejsca, które znam, aby szukać aliasów:
- ~ / .bashrc
- ~ / .bash_profile
- / etc / bashrc
- / etc / profile
Bez powodzenia.
Wiem, że to alias
dlatego, że kiedy to robię which COMMAND
, otrzymuję:
alias COMMAND='/path/to/command'
/path/to/command
Czy istnieje sposób, aby znaleźć plik, który deklaruje alias
znajomość tylko alias
nazwy?
set -x
jak sugerowano u góry i sprawdź, czy to Ci w tym nie zawęzi.set -x
na górze/etc/bash_profile
lub/etc/bashrc
. Dlaczego po prostu nie uruchomićbash -i -x
lubbash -l -x
?Odpowiedzi:
Chciałbym spojrzeć w
/etc/profile.d/
za przestępstwaalias
.Możesz również wykonać następujące czynności, aby go znaleźć:
Spowoduje to rekurencyjne
grep
przechodzenie przez pliki szukające linii zaczynającej się odalias COMMAND
.Jeśli wszystko inne zawiedzie, połóż to na końcu swojego
~/.bashrc
źródło
Jest kilka rzeczy, które możesz wypróbować:
bash -v
aby zobaczyć, które linie są odczytywane podczas uruchamiania powłokibash -x
aby zobaczyć, jakie polecenia są uruchamiane podczas uruchamiania powłokibash -v
Ta
-v
opcja powodujebash
wydrukowanie każdej linii z każdego pliku skryptu, który czyta podczas czytania.Zacznij od uruchomienia
poczekaj 5-10 sekund, a następnie naciśnij Ctrl+C.
To da ci pojedynczy plik o nazwie,
bash-i.out
który jest jak wszystkie twoje pliki startowe scalone (lub połączone) razem.Następnie użyj,
less
aby otworzyć plik i wyszukać alias za pomocą/aliasname
.Teraz porównaj, gdzie pojawia się ten alias w stosunku do innych linii w pliku. Na przykład w większości systemów
/etc/bash.bashrc
ma na górze komentarz, który mówi/etc/bash.bashrc
i też~/.bashrc
ma jeden.Jeśli jest nad twoim
~/.bashrc
, to prawdopodobnie jest to plik startowy,/etc
który definiuje alias, w przeciwnym razie znajduje się w twoim~/.bashrc
lub w pliku, który zawiera za pomocąsource
lub.
(polecenie kropki).Jeśli to nie pokazuje aliasu, spróbuj
Mówi to, że bash jest powłoką logowania, która odczytuje na przykład różne pliki startowe,
/etc/profile
a~/.bash_profile
zamiast/etc/bash.bashrc
i~/.bashrc
.bash -x
Jeśli
bash -v
nie da ci jednoznacznej odpowiedzi, spróbuj uruchomićbash -x
, która wypisuje polecenia uruchomione przez powłokę, a nie wiersze, które odczytuje powłoka.Metoda jest w zasadzie taka sama jak powyżej, z wyjątkiem zmiany
-v
na-x
. (W razie potrzeby możesz używać obu razem.)Uruchom tylko z jednym plikiem startowym
i sprawdź, czy masz alias.
Spróbuj tego samego z
rcfile
ustawieniem,/etc/bash.bashrc
jeśli twój system go posiada.Więc spróbuj
i rób to samo z każdym plikiem startowym bash, który ma
profile
w swojej nazwie, np. zmień$HOME/.bash_profile
na/etc/profile
.Niezależnie od tego, w jaki sposób pojawi się alias, zobaczysz plik, od którego powinieneś zacząć szukać.
źródło
Może twoja
.xinitrc
? Powinieneś również sprawdzić, czy Twoje.bashrc
lub.bash_profile
źródła innych plików w nich. Na przykład przechowuję wszystkie moje aliasy w osobnym pliku, do którego odwołuje się to polecenie:Kilka pytań, które mogą również pomóc: Czy dotyczy to zwykłego użytkownika lub użytkownika root? Które to polecenie? Jaki smak Linuksa?
źródło
Stosuję się do bardzo powszechnej praktyki wprowadzania moich definicji aliasów
a następnie wywołanie tego z .bashrc za pomocą
źródło