2016-05-22 11 views
2

オンラインで見ると、複数のDropboxアカウントを実行するのはかなり簡単です。環境変数を変更してからdropboxを実行するだけです。しかし、私は(.desktop file specificationを参照)の.desktopファイルを編集しようとしたのでExecの行は、このから変更されています。これまでデフォルトは、あるLinuxの複数のDropboxインスタンスへの方法

Exec=dropbox start -i 

Exec=env "HOME\=/home/reg/.dropbox-alt" dropbox start -i 

すべてからのI読んだことがあるはずです。また、次のようなエスケープと引用のすべてのバリエーションを試しました。

Exec=env HOME\=/home/reg/.dropbox-alt dropbox start -i 
Exec=env "HOME=/home/reg/.dropbox-alt" dropbox start -i 
Exec=env HOME=/home/reg/.dropbox-alt dropbox start -i 

何もドロップボックスを起動しないようです。しかし、私がbashで同じ行を試すと、起動しようとしますが、短くなりますが、それはdropboxがGUIを探しているからです。その場合、.desktopファイルで上記のことを実行すると思っていたでしょうが、何も起こっていません。

私はこれを、どのDropboxインスタンスも実行していない状態で実行しているので、他のインスタンスを探していて、別のインスタンスのロードを停止することはできません。

私はの.desktopファイルでこれをしようとした場合:

Exec=env dropbox start -i 

それはDropboxのを起動しますが、今、それは何の利点を持っていないデフォルトのインスタンスです。

私はこの仕事をするために何が欠けているのか教えていただけますか?

答えて

2
#!/bin/bash 

HOME_DIR=$HOME 
DROPBOXES=("$HOME/.dropboxes/personal" "$HOME/.dropboxes/business") 
function start_dropbox() { 
    HOME=$HOME_DIR 
    local flag 
    local home_dir 
    local OPTIND; 
    local verbose=0 
    local wait=0 

    while getopts p:vw opt; do 
    case $opt in 
     p) home_dir="$(echo $OPTARG | sed 's:/*$::')/" ;; 
     v) verbose=1 ;; 
     w) wait=1 ;; 
     *) ;; 
    esac 
    done 
    shift $((OPTIND-1)) 

    # Test if the process is already running 
    local pid=$(ps aux|grep "${home_dir}.dropbox-dist"|grep -v 'grep'|tr -s ' '| cut -d' ' -f 2) 
    if [ -n "$pid" ] 
    then 
    echo "Process already running with home dir. of: $home_dir" 
    return 8 # Process already running 
    fi 

    # Create home directory if it doesn't exist 
    if [ ! -e "$home_dir" ] 
    then 
    if mkdir -p "$home_dir"; 
    then 
     echo "Created directory: $home_dir" 
    else 
     echo "Failed to create directory: $home_dir" 
     return 9 # Failed 
    fi 
    fi 

    # Set up so works with GUI from command line 
    xauthority="${home_dir}.Xauthority" 
    if [ ! -e "$xauthority" ] 
    then 
    ln -s "$HOME/.Xauthority" "$xauthority" 
    fi 

    HOME="$home_dir" 

    # Start the dropbox daemon 
    if [[ $verbose -gt 0 ]]; then 
    echo '~/.dropbox-dist/dropboxd & '$home_dir 
    fi 
    ~/.dropbox-dist/dropboxd & 
    if [[ $wait -eq 0 ]]; then 
    sleep 2 # Give each instance time to startup completely before starting another one 
    else 
    read -n 1 -s -p 'Press any key to continue.' 
    echo 
    fi 
} 

function start_dropboxes() { 
    local dropbox 

    for dropbox in "${DROPBOXES[@]}" 
    do 
    start_dropbox [email protected] -p "$dropbox" 
    done 
} 

# 
# For testing & setup we can choose just one to startup 
# 
while getopts f:wv opt; do 
    case $opt in 
    f) start_dropbox -p "${DROPBOXES[$OPTARG]}" # NOTE: bash array indexes start at 0. 
     exit ;; 
    *) ;; 
    esac 
done 
OPTIND=1 

start_dropboxes [email protected] 
+0

が#!/ bin/bashに変更され、Mint上で動作します。 – nolazybits

3

端末を開き、以下のコマンドを貼り付けます。

$ mkdir "$HOME"/.dropbox-alt 
$ ln -s "$HOME/.Xauthority" "$HOME/.dropbox-alt/" 
$ HOME="$HOME/.dropbox-alt" 
$ /home/$USER/.dropbox-dist/dropboxd 

Dropboxのセットアップウィザードウィンドウが表示されます。

You can create a small script with the above commands to start Dropbox. 
One can put the script at startup. Don't forget to give the script execution permission. 

chmod +x /path/to/script 

I have tested the second method. Hope it will be useful. 
+0

これ:同様に、端末

$ HOME="$HOME/.dropbox-alt" && /home/$USER/.dropbox-dist/dropboxd 

注から端末

$ /home/$USER/.dropbox-dist/dropboxd 

開始代替-ドロップボックスから方法-1

開始ドロップボックスに記載されるように設定を完了素晴らしい作品ですが、私は本当に知りたがっていますデスクトップファイルタイプを使用して動作させる方法。私はすぐに投稿する予定のこの方法について洗練されたものを持っています。 – user5429087

関連する問題