python - 用 python 添加到 ~/.zshrc 文件
问题描述
我正在尝试编写一个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 文件中。有没有更好的方法来附加到文件而无需手动打开文件并输入它?
如果这是一个愚蠢的问题,对此很抱歉......
解决方案
以追加模式打开文件。您的代码还假设当前工作目录是用户的主目录,这不是一个好的假设。
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')
with (Path.home() / ".zshrc').open("a") as f:
也可以。
请注意,这.zprofile
将是更新环境变量(如PATH
, 而不是.zshrc
.
推荐阅读
- javascript - 使用 Ionic Capacitor 和 Framework7 设置本地通知
- node.js - 在猫鼬中填充条件
- siddhi - 如何在 siddhi 中为流参数设置默认值?
- java - 如何在 Java 8 中格式化和比较 DateTime(如果一个日期为空)?
- jenkins - 管道配置部分中的 Jenkins 管道配置
- security - 多用户应用程序和 Azure 存储?
- powershell - 尝试使用 Invoke-HKCURegistrySettingsForAllUsers 为每个用户组 HKCU hive 提供权限
- python-3.x - Python os.system - 设置最大执行时间
- json - 以下引发模块错误的 Lambda 代码有什么问题?
- java - 对 Java 对象的引用真正存在于哪里?