Czy mogę „wyeksportować” alias do SHELL, który wywołał skrypt?


14

Próbuję napisać skrypt narzędzia, który definiuje pewne aliasy.
Mój SHELL to tcsh(nie mogę tego zmienić).

Próbowałem następujące

#!/bin/tcsh  
alias log 'less ~/logs/log.`date '+%Y%m%d'`''

Następnie uruchamiam to w następujący sposób:

./myscript  
log

Otrzymuję wynik: log: Command not found.

Oczywiście, jeśli uruchomię to w ten sposób:

source myscript  
log

Wszystko w porządku.

Jakiś sposób to zrobić bez określania source ...?


Czy umieściłeś aliasw swoim ~/.cshrcpliku?
qweet

@qweet - To nie jest mój cel - chciałem czegoś dynamicznego.
RonK

Odpowiedzi:


18

Nie możesz Uruchamiając skrypt wykonujesz nową powłokę. Aliasy nie będą widoczne w procesie nadrzędnym.

Jedynym sposobem, jak wskazano, jest użycie, sourceaby bieżąca powłoka przetworzyła plik skryptu (bez rozpoczynania nowego procesu).


2
Dziękuję - tak myślałem - dodam alias do mojej .alias, który będzie chciał source myscript- chciałem czegoś łatwego, z którego mogą korzystać wszyscy członkowie zespołu - alias to zrobi.
RonK
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.