Useful when making configuration changes that you want other terminals to pick up with source
$ termrun [--newline] [--all|--pty /dev/pty/N] cmd
Note: Requires sudo
each time unless root is set as owner. See Privileges section below
Open terminal 1:
$ tty
/dev/pts/2
Open terminal 2:
$ termrun --newline --pty /dev/pts/2 echo hello world
--newline
appends \n
to the sent command to actually run
Displayed in open terminal 1:
$ tty
/dev/pts/2
$ echo hello world
hello world
$ vim ~/.zshrc # make config changes
$ termrun --newline --all source ~/.zshrc
If you're using a recent version of Cargo, you can see the cargo install
command:
$ cargo install termrun
After git cloning this repo, you can install as a cargo crate through
$ cargo install --path path/to/repo
This should make termrun
available everywhere assuming your cargo crates are in $PATH
termrun
uses ioctl(2)
under the hood through the TIOCSTI cmd flag. To do this successfully, the process needs root user privileges to run.
In practice, this means having to run termrun
with sudo
. By default when you install global crates, sudo doesn't know about them:
$ termrun
Error: EPERM: Operation not permitted
$ sudo termrun
[sudo] password for user:
sudo: termrun: command not found
The solutions here are to:
- (Easiest) Symlink
termrun
into asudo
-friendly path:sudo ln -s ~/.cargo/bin/termrun /usr/local/bin/
- Always specify the complete crate path so
sudo
can findtermrun
:sudo ~/.cargo/bin/termrun
- Specify
sudo
to use your$PATH
:sudo env "PATH=$PATH" termrun
MIT - Maintained by Milan