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 ...?

RonK
źródło
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).

Matteo
źródło
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