0

Pythonスクリプト(Python 2.7.1を実行)からtcshのエイリアスを作成しようとしています。エイリアスが作成されたら、Pythonスクリプトを実行したのと同じシェルでそれらを使用したいと思います。

私は試した:

os.system('alias test "echo test"')

しかし、次のエラーが発生します。

sh: line 0: alias: test: not found
sh: line 0: alias: echo test: not found

次に試しました:

os.system(r"""/bin/csh -i -c 'alias test "echo test"'""")

そして、エラーは発生しませんでしたが、エイリアスが登録されなかったため、使用できませんでした。

私が探している結果はこれです:

tcsh>python my_script.py
tcsh>test
test

ありがとう!

4

2 に答える 2

2

os.systemそのコマンドをサブシェル(一見ボーンシェル)で実行するため、構文が正しかったとしてもalias test="echo test"、呼び出し後は持続しません(サブシェルが閉じているため)。

しかし、これは XY の質問のようです。あなたは、あなたの問題である X についてではなく、あなたが考えていた解決策である Y について尋ねます。

一度に大量のエイリアスを作成したいだけなら、C シェル スクリプトを使用してみませんか!? (なぜあなたがc-shellで自分を苦しめているのかは、まったく別の問題です)。

于 2013-01-01T11:55:34.297 に答える
1

Python スクリプトは、シェルのコンテキストでは何も実行できません。これを使用することはできますが、新しいシェルを使用するため、既存のシェルを更新しません。subprocess.call(..., shell=True)

必要なことを行う唯一の方法は、Python スクリプトで有効なシェル コマンドを標準出力に書き込むことです。次に、それを実行するだけでなく、Python スクリプトの出力をシェルに評価させる必要があります。

于 2013-01-01T11:53:49.940 に答える