Программная ссылка на двоичный файл всегда использует путь к домашней папке (вместо текущей папки)
kdevelop предоставляет этот двоичный файл AppImage:
wget -O KDevelop.AppImage https://download.kde.org/stable/kdevelop/5.1.1/bin/linux/KDevelop-5.1.1-x86_64.AppImage
chmod +x KDevelop.AppImage
./KDevelop.AppImage
Это работает хорошо. Поэтому я хочу сделать мягкую ссылку под названием kd
к этому двоичному в /usr/bin
Например:
/usr/bin/sudo ln -s KDevelop-5.1.1-x86_64.AppImage kd
Теперь, если я бегу kd file1
, Я ожидаю, что это откроет имя файла file1
в текущей папке, но он всегда пытается открыть имя файла file1
в моей домашней папке - что не там, где должно быть.
Есть ли способ исправить эту проблему?
1 ответ
Некоторые возможные причины:
- Приложение всегда предполагает, что вы хотите открыть файлы в вашем домашнем каталоге, эффективно или буквально предваряя
$HOME
к пути. Это будет ошибка в любой программе * nix, о которой следует сообщить. - Приложение ведет себя по-разному, когда
$(basename "$0")
не являетсяKDevelop.AppImage
(что сказал @Scheff). - Вы на самом деле работает другой
kd
,
Возможные обходные пути / исследования:
- Передайте полный путь к файлу в командной строке. Если он пытается открыть / home / you // full / path / you / при условии, что он явно глючит, и у вас есть тестовый пример. Если это не так, то, возможно, есть некоторая ошибка в том, что ваш
$PWD
на самом деле Попробуйте проверить его значение перед запуском. - Симлинк с тем же именем, используя
sudo ln -s KDevelop-5.1.1-x86_64.AppImage /usr/bin
и попробуйте запустить это. Если он ведет себя так же, вы по крайней мере доказали, что символическая ссылка не является проблемой. - Бежать
type -a kd
и убедитесь, что ваш / usr / bin / kd подходит первым. Если нет, может быть встроен псевдоним или оболочка, которая имеет приоритет.
Тем не менее, что является фактическим сообщением об ошибке?