電子メールを生成するために実行するbashスクリプトがあります。現在のプロジェクトでは非常に重要なので、今修正したくありません。コマンドは、オペレーティングコンピュータとマイコンピュータで異なる方法で実行されます。
xdg-mime query filetype <file>
us-ascii
これは、単純にエンコードされたテキストファイル(カスタムファイル拡張子を含む)で実行されます。問題は、スクリプトが実行中のオペレーティングシステムからplain/text
(予想される動作)を返すことです。 xdg-mimeのデバッグモードは、実際にはオペレーティングfile -i
マシンでコマンドを実行していることを示しています。しかし、私のコンピュータではコマンドが返され、application/octet-stream
実行されます。gnomevfs-info
デスクトップ環境に関連しているようです(両方のシステムがgnomeで実行されています)。
xdg-mime
強制的に実行させる方法はありますかfile -i
?それともgnomevfs-info
正しいMIMEタイプを返しますか?設定を解除しようとしましたが、GNOME_DESKTOP_SESSION_ID
機能しますxdg-mime
。
detectDE()
{
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
fi
}
3番目は、コマンドが0を返し、DEがgnomeに設定されているため、overが使用されるようにすることelif
です。マニュアルページを見ようとしましたが、コマンドは横説説のように聞こえました。xdg-mime
gnomevfs-info
file -i
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1
ベストアンサー1
カスタムテキストファイル拡張子を事前に知っている場合は、解決策としてその拡張子の新しいMIMEエントリを登録してください。
たとえば、ファイル拡張子が「.list」の場合:
記述子ファイルの準備:飛行船リスト.xml
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/plain">
<comment>List file type</comment>
<glob pattern="*.list"/>
</mime-type>
</mime-info>
新しいMIMEエントリを登録します。
%xdg-mime install zeppelin-list.xml
尋ねる:
%xdg-mime query filetype my.list
text/plain