Существует ли способ препятствовать тому, чтобы процесс non-terminal-attached выполнился 'кто' в моем .envfile?

Большинство дистрибутивов теперь включает псевдодиск для этой точной цели. Можно записать файлы в него как нормальный, это обычно называют /dev/shm. Можно проверить, есть ли у Вас он как так:

$ mount |grep shm
tmpfs on /dev/shm type tmpfs (rw)

Если у Вас есть он, можно записать в него точно так же, как любая другая файловая система:

$ echo "hello world" > /dev/shm/somefile.txt

И посмотрите, что он использует нормальные инструменты:

$ ls -l /dev/shm/
total 680
-r-------- 1 saml saml 67108904 Jul 22 20:55 pulse-shm-3981461026
-r-------- 1 saml saml 67108904 Jul 18 18:06 pulse-shm-799251885
-rw-rw-r-- 1 saml saml       12 Jul 24 10:59 somefile.txt

Однако это не использует фактического дискового пространства, это использует RAM.

3
07.08.2014, 19:09
2 ответа

stty и более старые версии who am i будут выдавать сообщения об ошибках, если они не подключены к tty-устройству. stty проверяет stdin (fd 0); Я не знаю, какой дескриптор файла проверяет . Чтобы избежать появления этих сообщений об ошибках, обычным обходным путем было использование параметра -t в test (более известном как [), чтобы проверить, работает ли оболочка подключен к tty.

if [ -t 0 ]
then
    ID=`who am i | awk '{print $1}'`
else
    ID="unknown"
fi

В вашем случае вы можете заключить всю логику, которая устанавливает переменную PS1, в этот оператор if , поскольку PS1 имеет смысл только при работе на tty.

Ниже приводится соответствующий раздел из объяснения теста по ссылке выше.

-t file_descriptor

Истинно, если номер дескриптора файла file_descriptor открыт и связан с терминалом. False, если file_descriptor не является допустимым номером дескриптора файла, или если номер файлового дескриптора file_descriptor не открыт, или если он открыт, но не связан с терминалом.

4
27.01.2020, 21:12

Ваш скрипт, в первый раз использующий who, а не whoami. Измените его, и вы получите ожидаемый результат.

3
27.01.2020, 21:12

Теги

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