2016-07-26 12 views
1

私は$PYTHONPATHに追加するbashスクリプトを書いています。私.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 

Iドン実際の$PYTHONPATHの値を変数名だけの.bashrcに追加します。助けてください!

答えて

4

使用単一引用符:

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

シェルは、単一引用符で囲まれた文字列の変数の展開を行いません。

~/.bashrcに書いている場合は、sudoは必要ありません。ユーザーは自分自身で~/.bashrcを所有している必要があります。さらに、書かれているように、sudoコマンドはechoでのみ動作しました。リダイレクト>~/.bashrcは、ユーザーの許可レベルで行われます。 echosudoを必要とせず、利益も得られないので、sudoは実質的にノーオペレーションです。 [帽子の先端:トリプルリー]

+1

それはトリックでした。ありがとう! – cmoses

+2

'sudo'はここで何もしないことが幸運だと強調しているかもしれません。もしそうであれば、ユーザーが後で変更できないファイルを作成することができます。幸いなことに、 'sudo'は完全なno-opです。なぜなら、' sudo echo'が実行を開始する前に、リダイレクトによってユーザのシェルがファイルを作成するからです。 – tripleee

+0

@tripleee非常に良い点。 sudo-echoの議論で更新されました。 – John1024

関連する問題