я решил его с помощью этого:
filename=`basename $filepath`
fileext=${filename##*.}
fileext2=${filename%.*}
fileext3=${fileext2##*.}
if [ "$fileext3" == "tar" ]; then
fileext="tar."$fileext
fi
но эта единственная работа для известного типа архивации, в этом случае только tar
Обычно PATH
установлен на начальное значение очень системно-зависимым способом программой, которая регистрирует Вас в (pam_env
общий участник), затем /etc/profile
и ~/.profile
и файлы, которые они включают, продолжают изменять то значение.
Удалите любое изменение в PATH
в .bashrc
, параметры среды не принадлежат .bashrc
: посмотрите Различие между .bashrc и .bash_profile.
Сначала попытайтесь войти в систему в текстовом режиме (например, с ssh localhost
), поскольку запуск сессии намного более прост, чем в графическом режиме.
Поместить set -x
в начале /etc/profile
и ~/.profile
. Оболочка распечатает трассировку того, что она делает на ее потоке стандартной погрешности; ищите присвоения на PATH
в трассировке.
Нет никакого понятия приоритета к присвоениям переменной среды: кто бы ни присваивает последние победы.
Ваш ПУТЬ может быть установлен где угодно, не только в Вашем .bashrc файле. Скорее всего, Ваша система имеет файл, /etc/profile
и/или /etc/profile.local
который устанавливает путь по умолчанию для всех пользователей в Вашей системе. Пользователь определенные изменения или дополнения к нему мог бы быть установлен в Вашем .profile
файл, если они не находятся в Вашем .bashrc
, или можно просто использовать значение по умолчанию в системе.
Если Вы хотите, вносит изменения, которые только влияют на Вас, я вставил их Ваш .profile
использование следующей формы:
export PATH=/new/directory:$PATH
таким образом, редактируя текущий путь вместо того, чтобы переписать его полностью.
Раздел "INVOCATION" man bash
(или здесь), объясняет различие между .profile
и .bashrc
, и так далее, и который другие файлы и читают и в том, какой порядок, когда Вы входите в систему или запускаете оболочку.
Очень маловероятно, что механизм для этого существует. Просто думайте о том, сколько путей там состоит в том, чтобы изменить значение огибающей переменной в оболочке.
У Вас может быть некоторая удача с set -x
все же.