auto nice daemon

Взгляните на BASH _ENV

INVOCATION
          When bash is started non-interactively, to  run  a  shell script,  for
          example, it looks for the variable BASH_ENV in the environment, expands
          its value if it appears there, and uses the expanded value as the  name
          of  a  file to read and execute.  Bash behaves as if the following com‐
          mand were executed:
          if [ -n "$BASH_ENV" ]; then. "$BASH_ENV"; fi
          but the value of the PATH variable is not used to search for the  file‐
          name.

  BASH_ENV
          If  this parameter is set when bash is executing a shell script,
          its value is interpreted as a filename  containing  commands  to
          initialize the shell, as in ~/.bashrc.  The value of BASH_ENV is
          subjected to  parameter  expansion,  command  substitution,  and
          arithmetic  expansion  before  being  interpreted as a filename.
          PATH is not used to search for the resultant filename.

Когда bash выполняет сценарий оболочки не -в интерактивном режиме,.bashrc не читается, а файл функции не загружается.
Если для BASH _ENV задано имя файла функции, этот файл читается и выполняется, как указано в INVOCATION.
Поэтому нет необходимости создавать файл функции в каждом сценарии оболочки, который использует эту функцию.

Пример для иллюстрации:

Не Ubuntu, а Debian -linux 4.14.0 -3 -amd64 #1 SMP Debian 4.14.17 -1 (2018 -02 -14 )x86 _64 GNU/Linux с Xfce 4.12

Создайте файл функций в своем$HOME

cat mesfuncbash

piste ()
{
echo $0 >> ~/lapiste
date >> ~/lapiste
}

Создайте скрипт, использующий эту функцию

cat lescript

#!/bin/bash
echo $0
. ~/mesfuncbash
piste
echo fin

здесь скрипт исходит из файла функции

Создать лаучер для lescriptнаDesktop

Терминал не нужен

выполнить его.

Файл ~/lapisteобновлен.

Теперь удалите . ~/mesfuncbashиз lescript

.

выполнить его

Файл ~/lapisteне обновлен.

Если вы запускаете lescriptна терминале

Баш тебе скажет:

line 3: piste: command not found

Теперь вы должны установить BASH_ENVна имя файла функции.

В debian с xfce .profileне читается при запуске, поэтому вы не можете использовать его для установки BASH_ENV.

Вы должны создать файл .xsessionrcв своем $HOME.

cat.xsessionrc

export BASH_ENV="$HOME/mesfuncbash"

выход из системы и вход в систему, таким образом .xsessionrcчитается при запуске

Теперь вы можете запускать лаучер на рабочем столе. и файл ~/lapisteобновляется.

0
22.01.2020, 02:53
1 ответ

Ananicy:Почти то, что я хотел. Предварительно настроен для популярных приложений (, таких как браузер ). Сеть отсутствует.

-1
31.03.2020, 10:34

Теги

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