プログラミングと直接的に関係はないのですが。
Ubuntuというよりもgvfsだったりnautilusだったり、上物のソフトウェアの話かと思います。
ただ僕が使ってるマシンがUbuntuというだけです。
Ubuntuのデフォルトのファイラーはnautilusですが、これssh(sftp)でリモートサーバをマウントしてあたかもローカルにあるのと同様にファイラーでアクセスできるんですね。
で、そうすると何がうれしいかというと、vscodeみたいなIDEでも特別な設定なしにリモートのリソースにアクセスできるわけですよ。
普通のファイルもファイラーからのCtrl+C/Ctrl+Vでローカル/リモート間でコピペもできますし。
なんならターミナルでも透過的に操作ができる。
これ、実態はgvfsの機能ですかね。nautilusはあくまでもgvfsの機能を叩いてるんだと思います。
ちゃんと調べてないです。
さて、gvfsの機能であるという所まで辿りついたので、次はコマンドラインでマウントできると楽なのではないかというところになっていきます。
コマンドラインでマウントするには以下のコマンドを発行します。
gio mount sftp://USER@example.com/
もちろんユーザー名とホスト名は適宜変更してくださいね。
こうしてマウントするとnautilusに左側にもマウントされた項目が表示されます。
便利だ。
コマンドラインで書けたら次は自動ログインしたくなるでしょう?なりません?
僕はしたかったんですが、そこでちょっとハマったので記事を書いておこうと思った次第です。
ちなみに毎日ルーターの再起動してるために毎日接続が切れるので、接続切れた後に再接続しておいて欲しかったのが動機です。
#!/bin/bash
if [ -z $DBUS_SESSION_BUS_ADDRESS ]; then
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
fi
export DBUS_SESSION_BUS_ADDRESS
for url in \
'sftp://USER@example.com/' \
'sftp://USER@example.com/' \
; do
(gio mount "${url}") > /dev/null 2>&1 &
done
こんな感じにDBUS_SESSION_BUS_ADDRESSが必要となるようです。
で、cronから実行すると環境変数が定義されておらずマウント出来ない。
ちなみに1000となってるところは多分uidなので適宜自分のuidにしてください。
それでは良いLinuxライフを。