
Я добавил скрипт в /usr/local/bin/apt-get
систему Ubuntu Trusty, который выполняет некоторую проверку, необходимую перед запуском «официального» apt-get
.
По причинам, которые я просто не могу понять, этот сценарий полностью игнорируется, несмотря на то, что все говорит мне, что так быть не должно.
В целях тестирования скрипт в настоящее время ничего не делает и должен просто завершить работу, но он в любом случае не запускается.
/usr/local/bin
имеет приоритет в $PATH
:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ which apt-get
/usr/local/bin/apt-get
$ ls -l /usr/local/bin/apt-get
-rwxr-xr-x 1 root root 553 Apr 16 03:01 /usr/local/bin/apt-get
strace
похоже, выполняет скрипт:
$ strace apt-get
execve("/usr/local/bin/apt-get", ["apt-get"], [/* 26 vars */]) = 0
[...]
open("/usr/local/bin/apt-get", O_RDONLY) = 3
[...]
read(10, "#!/bin/sh\n\n# Note: this little s"..., 8192) = 553
Однако сценарий явно игнорируется:
$ apt-get
apt 1.0.1ubuntu2 for amd64 compiled on Oct 28 2014 20:55:14
Usage: apt-get [options] command
...
Запуск /usr/local/bin/apt-get
напрямую завершается молча, как и должно быть, поэтому сам скрипт является исполняемым и работает правильно.
Может ли это быть скрытая настройка безопасности, о которой я ничего не знаю?