【发布时间】:2018-08-10 20:35:11
【问题描述】:
嗨,是否可以通过节点运行“source ./.bash_file”? 尝试使用 electron-app 创建一个小工具来创建 ssh-alias,但无法更新 bash-file 以使新别名可用于终端。
谢谢
【问题讨论】:
嗨,是否可以通过节点运行“source ./.bash_file”? 尝试使用 electron-app 创建一个小工具来创建 ssh-alias,但无法更新 bash-file 以使新别名可用于终端。
谢谢
【问题讨论】:
是的,您可以使用 child_process.spawn() 或 child_process.exec() 获取 bash 脚本。
但是我相信它不会像你期望的那样工作。
这是因为,虽然spawn 创建了一个新进程,它还在该进程中启动了一个新的 shell,您的脚本将在其中获取,然后在新生成的时候被杀死过程结束。
如果您只需要新生成的 shell 上下文中可用的脚本结果,则可以创建一个新脚本,该脚本首先获取 bash_file,然后在同一脚本的其他位置使用对当前运行的 shell 所做的任何更改。
假设:
bash_script.sh 包含
#!/bin/bash
export FOO=1 # exports new FOO variable into currently running shell
而test_bash_script.sh 包含
#!/bin/bash
source ./bash_script
echo $FOO
在当前的 shell 中,你
$ chmod +x test_bash_script.sh
然后
$ test_bash_script.sh # => will echo '1' to stdout
$ echo $FOO # => echoes nothing
第二行没有回显任何内容,因为 FOO 仅在 bash_script.sh 和 test_bash_script.sh 中可用。
【讨论】: