使用sudo命令时,由于安全性考虑,sudo执行命令时会重置一些环境变量,导致在使用sudo命令时,无法读取到环境变量的值,这给实际开发中带来很大的不方便,因此需要解决此问题。
以下是针对这个问题的完整攻略:
1. 使用“-E”选项开启“保留环境变量”功能
在执行sudo命令时,可以使用“-E”选项开启“保留环境变量”功能,这样就可以在sudo命令中获取到原有的环境变量。
示例:
$ export MY_VAR=123 # 设置环境变量MY_VAR为123
$ sudo -E bash -c 'echo $MY_VAR' # 在sudo命令中可以输出MY_VAR的值
123
2. 修改sudoers文件
sudoers文件是sudo权限控制的配置文件,在其中可以设置允许哪些用户执行哪些命令,也可以设置执行命令时保留哪些环境变量。
示例:
- 打开sudoers文件:
$ sudo visudo
- 在文件中添加以下内容(需修改你自己的用户名和变量名):
Defaults env_keep += "MY_VAR"
这里的“env_keep”表示要在sudo命令中保留的环境变量,MY_VAR即为要保留的变量名称。
保存文件,退出sudoers编辑器。
- 执行带有sudo命令的脚本,测试环境变量是否生效:
$ export MY_VAR=123
$ sudo /path/to/script.sh
# 在script.sh中可以读取到环境变量MY_VAR,并正确输出其值
通过以上两种方式,就可以解决使用sudo命令无法读取环境变量的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用sudo命令无法读取环境变量的解决方法 - Python技术站