Wie können wir Pfade für .cshrc konfigurieren?

921
SAN

In einem Shell-Skript versuche ich, eine neue tcsh-Shell zu öffnen und einige vordefinierte Aliase und env-Variablen zu laden, die ich nicht in der Standardeinstellung cshrc haben möchte. Ich kann es auch nicht in meinem Heimatverzeichnis haben, da dieses Skript von mehreren Benutzern verwendet wird. Welches sind die Pfade, nach denen tcsh nach einer cshrc-Datei sucht, wenn ein neuer Xterm oder eine neue Shell erstellt wird? Ist es über eine env-Variable konfigurierbar?

1

1 Antwort auf die Frage

1
Martin Tournoij

Aus der Manpage :

Eine Login-Shell beginnt mit der Ausführung von Befehlen aus den Systemdateien /etc/csh.cshrc und /etc/csh.login. Anschließend führt er Befehle aus Dateien im Home-Verzeichnis des Benutzers aus: zuerst ~ / .tcshrc (+) oder, wenn ~ / .tcshrc nicht gefunden wird, ~ / .cshrc, dann ~ / .history (oder den Wert der Shell-Variablen histfile) ), dann ~ / .login und schließlich ~ / .cshdirs (oder den Wert der dirsfile-Shell-Variablen) (+). Die Shell kann /etc/csh.login vor und nicht nach /etc/csh.cshrc und ~ / .login vor anstatt nach ~ / .tcshrc oder ~ / .cshrc und ~ / .history lesen, sofern dies kompiliert ist. siehe die Versionsshellvariable. (+)

Es gibt kein Argument für die Umgebungsvariable, um dies zu ändern, außer um -fdas Laden einer Startdatei zu verhindern.

Sie können den sourceBefehl jedoch verwenden, um eine Datei von innen zu laden tcsh:

source /etc/my-special-settings.tcsh 

Sie könnten in Ihrem Benutzer auch so etwas tun ~/.tcshrc:

if ( $?SPECIAL_SETTINGS ) then source /etc/my-special-settings.tcsh else source ~/.tcsh/tcshrc endif 
Danke @Carpetsmoker, ich benutze in der Tat den env variablen Ansatz. Ich wollte nicht alle Benutzer bitten, dies zu ihrer .cshrc hinzuzufügen. SAN vor 9 Jahren 0