Как получить путь к текущему запущенному файлу скрипта?

sudo yum groupinstall "Chinese Support"должен помочь установить все отсутствующие шрифты и конфигурации, связанные с китайским языком, в дистрибутиве на основе Red Hat.

Это должно решить вашу проблему с китайскими шрифтами.

0
06.04.2016, 21:18
2 ответа

Можем ли мы предположить, что файлы не были изменены на диске (, по крайней мере, файлы с тем же именем не добавлялись и не удалялись )и /proc/[pid]/cmdlineнадежны (см. примечание ниже )?

Согласно proc (5):/proc/[pid]/environсодержит исходные переменные окружения (, которые не будут изменены, даже если сама программа изменит переменные окружения внутри ), включая PWDи PATH.

Поэтому:
если путь в cmdlineначинается с относительного имени каталога (с ), вы можете использоватьPWD/proc/[pid]/environ)в качестве базового пути и разрешить относительный путь;
если путь в cmdlineявляется именем самой программы, вы можете перебрать каждый каталог вPATH/proc/[pid]/environ), а целью является первый файл с таким же именем.


Дополнительные примечания:

/proc/[pid]/exeкажется разыменованным файлом (, например. /usr/bin/python3.6вместо /usr/bin/python3или /usr/bin/python, если они являются символическими ссылками );

/proc/[pid]/cmdlineтакже может содержать странную информацию для некоторых программ, поэтому может быть ненадежной. Кажется, это связано с программой, но не с ядром,и я не заметил, чтобы скрипты Python вели себя таким образом (и редактирование sys.argvв python, похоже, не влияет на/proc/[pid]/cmdline). Мой вопрос также немного говорил об этом.

0
28.01.2020, 04:51

Экспериментально для bash /proc/{pid}/fd/255— это ссылка на полный путь исполняемого скрипта.

#! /bin/bash

ls -l /proc/$$/fd/255
0
28.01.2020, 04:51

Теги

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