user3182358
user3182358

Reputation: 53

How to execute a script in zsh and then become interactive?

I want to run a predetermined set of commands after the invocation of zsh (i.e. after .zshrc is executed) that returns the user to an interactive shell when complete.

Things like this comes to my mind:

urxvt -e 'zsh -c ". scriptname"'

but instead of exiting zsh and the terminal once the script finishes, I want an interactive shell at the end. The idea is to simply save users from having to type ". scriptname" whenever they log in.

Application: Several users are using the same account (strange but true) and I want to help in adjusting user specific settings. Yes, I know that one could use different accounts for that :-)

Upvotes: 5

Views: 1717

Answers (1)

chepner
chepner

Reputation: 532238

Not really what you were asking for, but should have the desired result. You use an environment variable to pass the name of the user-specific script to source to .zshrc (or other appropriate startup file).

urxvt -e 'USERSCRIPT=scriptname zsh'

Then in .zshrc for the actual user, include

. $USERSCRIPT

(All of this is not to say that there isn't an option to run a command then remain in interactive mode; I just can't find a way to do it, so I offer this workaround.)

Upvotes: 3

Related Questions