用python添加到~/.zshrc文件

用python添加到~/.zshrc文件,python,shell,file,path,zsh,Python,Shell,File,Path,Zsh,我正在尝试编写一个cli,它将采用用户输入到命令行的路径,然后根据其shell(在本例中为zsh)将该路径添加到正确的路径文件中。我试过使用: shell = str(subprocess.check_output("echo $SHELL", shell=True)) click.echo("Enter the path you would like to add:") path = input() if 'zsh' in shell: with

我正在尝试编写一个cli,它将采用用户输入到命令行的路径,然后根据其shell(在本例中为zsh)将该路径添加到正确的路径文件中。我试过使用:

    shell = str(subprocess.check_output("echo $SHELL", shell=True))
    click.echo("Enter the path you would like to add:")
    path = input()
    if 'zsh' in shell:
        with open(".zshrc", 'w') as zsh:
            zsh.write(f'export PATH="$PATH:{path}"')
这不会抛出错误,但似乎不会添加到实际的~./zshrc文件中。 有没有更好的方法可以在不手动打开文件并键入的情况下附加到文件中


如果这是一个愚蠢的问题,非常抱歉…

解决了!如果有人遇到同样的问题,我想把答案放在这里。 而不是试图用

with open(".zshrc", 'w') as zsh:
    zsh.write(f'export PATH="$PATH:{path}"')
你可以这么做

subprocess.call(f"echo 'export PATH=$PATH:{path}' >> ~/.zshrc", shell=True)
如果有人能用python从~/.zshrc中删除,那将非常有用……

以追加模式打开文件。代码还假设当前工作目录是用户的主目录,这不是一个好的假设

from pathlib import Path
import os


if 'zsh' in os.environ.get("SHELL", ""):
    with open(Path.home() / ".zshrc", 'a') as f:
        f.write(f'export PATH={path}:$PATH')
从pathlib导入路径
导入操作系统
如果os.environ.get中的'zsh'(“SHELL”,”):
将open(Path.home()/“.zshrc”,“a”)作为f:
f、 写入(f'export PATH={PATH}:$PATH')
使用(Path.home()/“.zshrc”)。将(“a”)作为f:
打开也可以


请注意,
.zprofile
将是更新环境变量(如
PATH
)的首选位置,而不是
.zshrc

可能值得注意的是,我只是为MacSy构建此文件,您不需要子进程来检查环境变量的值。
shell=os.enviroin['shell']
@James:您是否确保从主目录运行此程序?@James:即使您的程序运行正常,也会非常危险,因为您打开
.zshrc
进行写入,这意味着此文件的任何现有内容都将丢失。@user1934428谢谢您的建议。我已经按照chepner的建议对swit进行了操作ch to.zprofile并使用append而不是write。谢谢!非常好用。(会投票但没有足够的声誉)