Скрипт Bash не работает при запуске вне терминала - PullRequest
1 голос
/ 21 июня 2011

Этот скрипт не работает должным образом при графическом запуске (двойным щелчком по значку скрипта и выбором запуска), однако, он работает просто отлично, если вызывается из терминала; не будет сохранять файл или загружать содержимое из существующего файла. Пожалуйста помоги! Спасибо.

#!/bin/bash

# This script provides a simple and secure messaging system for users not
# familiar with gpg or using the terminal. The idea is to keep sensitive
# plaintext files off one's computer.

zenity --question --text="Select operation:" --ok-label="Compose" --cancel-label="Read"
if [[ $? == 0 ]]; then
    usr=$(zenity --entry --text="Sender Key ID:")
    rec=$(zenity --entry --text="Recipient Key ID:")
    pwd=$(zenity --password)
    outfile=$(zenity --file-selection --save --confirm-overwrite)
    zenity --text-info --editable | gpg -aseu $usr -r $rec --passphrase $pwd --cipher-algo AES256 -o $outfile
else
    infile=$(zenity --file-selection)
    pwd=$(zenity --password)
    gpg -d --passphrase $pwd $infile | zenity --text-info --height=600 --width=800
fi

1 Ответ

1 голос
/ 21 июня 2011

Вероятной причиной ошибки является то, что у вас разные среды при выполнении через интерактивную оболочку (таким образом, ваш источник .bashrc) и двойной щелчок (неинтерактивный, а не источник .bashrc

).

Вы можете сравнить окружения, выполнив env > from_terminal против env > double_click и затем используя diff или что-то подобное.

Вы также можете (после выполнения вышеизложенного) добавить в свой скрипт from_terminal, чтобы проверить, работает ли он с терминальной средой. Как указано в одном из комментариев, set -vx ваш друг.

...