Возможно, это не самое лучшее решение, но оно мне вполне подходит.Мне всегда нравилось использовать Python для моих повторяющихся задач, что для правильного выполнения в bash потребуется слишком много времени, и это определенно отвечает всем требованиям.
Идея состоит в том, чтобы проверить, присутствует ли /sbin
в $PATH
, ограниченный началом или концом строки или двоеточием.grep
или даже расширенный тест ([[
) может сделать это для вас довольно легко, но для общего решения, где интересующий путь может содержать управляющие символы регулярного выражения или вам придется экранировать части строки.В Python это намного проще, чем в bash: Можно ли надежно экранировать метасимволы регулярных выражений с помощью sed .Поэтому я использую скрипт, подобный этому (который фактически избегает почти всего анализа вручную):
inpath
#/usr/bin/env python
"""
Checks if the sole argument is in the PATH.
Returns 0 if yes, 1 if no. It is an error to pass in more
than one command-line argument.
"""
import sys
from is import get_exec_path
from os path import abspath, normcase
if len(sys.argv) != 2:
raise ValueError('Exactly one command line argument must be provided')
path = [normcase(abspath(p)) for p in get_exec_path()]
sys.exit(sys.argv[1] not in path)
Это может быть реализовано на любом количестве языков прощечем в Баш;Просто я знаком с Python.Он должен работать с любой верной версией, вероятно, даже до версии 2.6.Он написан для работы в Unix или Windows, хотя я собираюсь догадаться, что он не очень полезен для последних.Используйте это так:
if inpath /sbin ; then
echo "export PATH=\"$PATH:/sbin\"" >> ~/.bashrc
fi
Или
inpath /sbin && echo "export PATH=\"$PATH:/sbin\"" >> ~/.bashrc