わからないことがあった。次の状況:コマンドライン(dropbox.py)を介してドロップボックスを制御するためにPythonフロントエンドをダウンロードしました。私はこのファイルをフォルダに入れました:
/home/username1/.dropbox-dist/dropbox.py
/ usr/binに「dropbox」という簡単なbashスクリプトを作成しました。
#!/bin/bash
python /home/username1/.dropbox-dist/dropbox.py
今私がそれを実行すると、次のことが起こります:
ファイルの場所:
root@linux_remote /home/username1 # whereis dropbox
dropbox: /usr/bin/dropbox
私がそれを実行するとき:
root@linux_remote /home/username1 # dropbox
zsh: no such file or directory: /home/username2/.dropbox-dist/dropboxd
うん。別のユーザー名を教えてくれます。具体的には、このlinuxboxにSSH経由でログインしています。リモートシェルでは屏風が走っています。屏風ではzshを実行します。Username2は、接続したローカルlinuxboxに現在ログインしているユーザーと同じです。
username2@linux_local /home/username2 # ssh username1@linux_remote
それが私がつながっている方法です。
したがって、ローカルシェルからリモートシェルに渡された変数が必要であり、Pythonはそれを読み取っているように見えますが、それがどれであるかがわかりません。
さて、それを見てください。bashスクリプトに書き込んだコマンドを入力すると、次のようになります。
username2@linux_remote /home/username2 # python /home/username1/.dropbox-dist/dropbox.py
Dropbox command-line interface
したがって、手動で実行すると実行されます。別のこと:パス全体で実行すると、それも機能します:
root@linux_remote /home/username1 # /usr/bin/dropbox
Dropbox command-line interface
また、たとえば「bash -l」を使用して「dropbox」を実行しようとすると、login-shellを介して実行すると機能します。
ハッシュバンを「#!/ usr / bin/zsh」に変更しても機能しません
これについて何かアイデアはありますか?