Come posso fare in modo che xterm esegua il mio file .login quando si apre?

-1

Il titolo dice tutto. Sto usando Yosemite 10.10.3 con XQuartz 2.7.7. Grazie per l'aiuto! Espanso: quando si apre un nuovo terminale (ad esempio terminale o oggetto, che utilizzo principalmente) viene eseguito il file ~ / .login. Questo imposta variabili d'ambiente, ecc. Che uso. Quando xterm si apre, non esegue ~ / .login, quindi devo trovarlo prima di iniziare qualsiasi lavoro. Fin qui tutto bene. Ovviamente, se riesco a ottenere il file .login eseguito all'avvio di xterm, risparmierò un po 'di tempo. Il problema è quando spawn un comando per eseguire un comando shell definito nel file .login. Questo non funziona se il file .login non viene eseguito quando si apre la shell. Questo è doloroso. Ho provato a creare un file .xinitrc, ma sembra funzionare al 100%. Ho bisogno di qualcosa di meglio. Certo, se fossi una persona reale, probabilmente lo saprei, ma ...

Sto usando tsch. btw: se .login è il file sbagliato sono felice di portare a termine il lavoro in un altro modo che funziona.

    
posta Ross Smith 10.05.2015 - 23:08
fonte

2 risposte

1

Da man xterm :

-ls This option indicates that the shell that is started in the xterm 
    window will be a login shell (i.e., the first character of argv[0] will be a dash, 
    indicating to the shell that it should read the user's .login or .profile).

Da man tcsh :

A login shell begins by executing commands from the system files /etc/csh.cshrc
and /etc/csh.login. It then executes commands from files in the user's home directory:
first ~/.tcshrc (+) or, if ~/.tcshrc is not found, ~/.cshrc, then ~/.history (or the
value of the histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the
value of the dirsfile shell variable) (+). The shell may read /etc/csh.login before 
instead of after /etc/csh.cshrc, and ~/.login before instead of after ~/.tcshrc or 
~/.cshrc and ~/.history, if so compiled; see the version shell variable. (+)

Non-login shells read only /etc/csh.cshrc and ~/.tcshrc or ~/.cshrc on startup.

Quindi nel tuo caso puoi assicurarti che xterm sia chiamato come xterm -ls (per farlo agire come una shell di login) o rinominare .login in .cshrc (o .tcshrc ).

    
risposta data 12.05.2015 - 14:16
fonte
0

Ho avuto lo stesso identico problema, che è apparso dopo l'aggiornamento all'ultimo Mac OSX. L'apertura di un nuovo terminale ha generato un errore, ovvero 'If: Expression syntax', e .login non è stato eseguito.

Soluzione: elimina il file /etc/csh.login, o ispezionalo per vedere se contiene un'istruzione incriminata (nel mio caso, una linea che esegue uno script associato al pacchetto mdsplus).

Spero che questo aiuti

    
risposta data 13.07.2018 - 14:54
fonte

Leggi altre domande sui tag