使用bash脚本将路径添加到$PYTHONPATH

12

我写了一个Bash脚本添加到我的$PYTHONPATH。我的.sh文件如下:

sudo echo export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module >> ~/.bashrc

我希望添加到我的.bashrc中的内容是:

PYTHONPATH=$PYTHONPATH:/path/to/new/python/module

然而,我只能让它添加:

PYTHONPATH=/all/other/python/modules/already/on/path:/path/to/new/python/module

我不想把实际的$PYTHONPATH值添加到我的.bashrc中,只想添加变量名,请帮忙!

2个回答

13

使用单引号:

$ echo 'export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module' >> .bashrc
$ cat .bashrc 
export PYTHONPATH=$PYTHONPATH:/path/to/new/python/module

单引号字符串中的变量不会被 shell 展开。

如果您要写入 ~/.bashrc,则不需要使用 sudo。用户应该拥有自己的 ~/.bashrc 文件。此外,如所写的那样,sudo 命令仅对 echo 起作用。重定向 >~/.bashrc 是使用用户级别的权限完成的。由于 echo 不需要也无法从 sudo 中获益,因此在实践中,sudo 实际上是一个无操作命令。[致谢:tripleee]


2
也许需要强调在这里sudo没有任何作用是幸运的;如果有作用,你可能会创建一个用户后来无法修改的文件。幸运的是,在这里,sudo是完全无操作的,因为重定向导致用户的shell在sudo echo开始执行之前就创建了该文件。 - tripleee
@tripleee非常好的观点。回答已更新,包括sudo-echo讨论。 - John1024

-1

尝试

echo 'export PYTHONPATH=/path/to/caff-dir/python'

此外,您可能需要运行以下命令:

pip install -r requirement.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接