Проблема, видимо, в особенностях самого скрипта "CAJA_SCRIPT_SELECTED_FILE_PATHS", что-то там с присутствующей в нем переменной $IFS . Если взять все выражение в общие кавычки, то пробел заменяется переводом строки.
Нормально выдавалось лишь в варианте вообще без всяких кавычек -
echo -n $CAJA_SCRIPT_SELECTED_FILE_PATHS | .......
Поэтому, чтобы не изучать Bash, сделал через дополнительную переменную и выдернутый путь вместо файла загнал в "мышиный" буфер (это который через колесико). Получилось такое:
#!/bin/sh
a=$(echo -n $CAJA_SCRIPT_SELECTED_FILE_PATHS)
echo -n \"$a\" | xclip
# Если нужен обычный буфер, то вывод в него делаем такой строкой
# echo -n \"$a\" | xclip -filter -selection clipboard
Скрипту даете разрешение на запуск и перекладываете в папку скриптов Caja ( /home/nfn/.config/caja/scripts ) . Далее через ПКМ за два клика получаете в буфере полный путь к файлу, заключенный в кавычки, что позволяет иметь пробелы в названиях каталогов и файлов при работе в терминале.
Кстати, скрипты для присвоения файлам права на запуск и снятие этого права ( не мои )
разрешение на запуск . То же туда - в Caja
#!/bin/sh
# set_exec
# Sets selected files as executable
# looping required for multiple filenames with spaces
for arg
do
chmod +x "$arg"
done
на запрет
#!/bin/sh
#
# This script removes executable bit from all files (excluding directories!)
# recursively. Very useful when you copy files from MS Win partition or from a
# CD recorded on Windows.
#
# Author: Krzysztof Luks <m00se@iq.pl>
#
# Copyright (C) 2002 Krzysztof Luks
# Licence: GNU GPL 2 or later.
#
# set desired mode here
MODE="644"
# We don't want to split CAJA_SCRIPT_SELECTED_FILE_PATHS on spaces.
IFS="
"
for ARG in $CAJA_SCRIPT_SELECTED_FILE_PATHS
do
if [ -d "$ARG" ]
then
for FILE in `find "$ARG" -type f`
do
chmod -f $MODE "$FILE"
done
elif [ -f "$ARG" ]
then
chmod -f $MODE "$ARG"
fi
done