Как правильно использовать приложения в '/opt'?

При открытии оболочки bash ей передается содержимое файла истории. Когда он выходит, он добавляет свою историю в файл истории.

Если вы откроете другую (интерактивную) оболочку bash (в том же окне терминала), выполните несколько команд или только exit, команды (или только exit) будут добавлены в файл истории.

Однако если вы запустите неинтерактивную подпрограмму, история будет отключена, а переменная окружения HISTFILE будет снята.

Вы можете проверить это, выполнив (bash -c 'echo x$HISTFILE') или просто bash -c 'echo x$HISTFILE'. Это приведет только к эху x, доказывая, что переменная HISTFILE не установлена во вложенной оболочке. (Я добавил x только для того, чтобы получить видимый вывод от команды echo.)

(Причина bash -c и одинарных кавычек в том, что они предотвращают расширение переменной оболочки в родительской оболочке. Если вы запустите (echo x$HISTFILE), расширение переменной оболочки передаст значение HISTFILE в под-оболочку, которое она затем передаст эхом, создавая впечатление, что оно установлено в под-оболочке).

Таким образом, при запуске вложенной оболочки история выключена, а переменная HISTFILE не установлена. При выходе из подкоманды в историю ничего не добавляется. Это именно то, что вы видите.

Вы можете заставить под-оболочку записать свою историю в файл истории:

$ history -w  # write current history
$ wc -l $HISTFILE  # count lines in history file
32 /home/anyuser/.bash_history

$ bash -c 'export HISTFILE=~/.bash_history'
$ wc -l $HISTFILE
32 /home/anyuser/.bash_history

$ bash -c 'export HISTFILE=~/.bash_history;history -w'
$ wc -l $HISTFILE
0 /home/anyuser/.bash_history 

Последняя команда под-оболочки (та, что с history -w) перезаписывает существующий файл истории историей под-оболочки, которая пуста, потому что история отключена в неинтерактивной под-оболочке.

4
20.11.2016, 01:01
2 ответа

Программы, которые вы устанавливаете через apt- get (или aptitude) почти всегда соответствующим образом попадает в / usr. НО программы, которые вы компилируете из исходного кода и производите установку, чаще всего попадают в / usr / local / bin, / usr / local / lib и т. Д., И у вас могут возникнуть проблемы с этим, поскольку путь, установленный пользователем в Debian / Ubuntu, - / usr, а не / usr / local.

При компиляции из исходного кода добавьте этот переключатель в конфигурацию: ./configure --prefix = / opt. Таким образом, при установке файлы окажутся в правильном каталоге

0
27.01.2020, 21:01

Даже если вы просто скопируете его в /opt, просто chmod 755 на директории и исполняемом файле, чтобы позволить ему запускаться всеми. Что касается вывода, хороший способ сделать это - сделать папку принадлежащей определенной группе и добавить всех пользователей, которые могут изменять xxx_data, в эту группу, например, так (запуск от имени root):

groupadd xxx_data
chown root:xxx_data /path/to/folder
chmod 770 xxx_data /path/to/folder
usermod -aG xxx_data <username> #Repeat for each user

Вам нужно выполнить chmod 755 в вашем домашнем каталоге, или переместить xxx_data в другое место.

Возможно, вам придется выйти из системы и снова войти, чтобы обновить разрешения.

1
27.01.2020, 21:01

Теги

Похожие вопросы