touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #40571
[Bug 1399948] Re: Commands on found if both ./bin and ~/bin in PATH
> I suspect that it is some cache which is not properly getting reset.
Your assumption is somewhat correct. Bash does cache the locations of
executables it located. The keyword to look for would be hashing.
At first sight that behaviour doesn't seem to have changed for quite a
long time, it can be influenced via a configuration option though.
Could you please try to set the 'checkhash' option, and check if it still behaves the way you described?
The command to do this would be:
shopt -s checkhash
you can check if the option was set successfully as follows:
shopt checkhash
wich sould return:
checkhash on
The effect of enabling this option should be that when a command is
processed not just the hashed file is executed, but beforehand it will
be checked if the file does actually exists and otherwise the executable
will be rehashed.
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to bash in Ubuntu.
https://bugs.launchpad.net/bugs/1399948
Title:
Commands on found if both ./bin and ~/bin in PATH
Status in bash package in Ubuntu:
New
Bug description:
I use (and have been using for 20 years or so) a path variable that looks like
PATH=".;./bin;~/bin;$PATH"; export PATH
This PATH should execute in priority: project specific commands (in the working directory, or the bin
subdirectory of the working directory), my personal commands (in my $HOME/bin folder) and then system commands.
The problem seems to be that when I start a shell in my home directory, it will cache the location of commands in ~/bin
as if they were in ./bin and then will be unable to find them if I cd out of my home directory.
For example, I have a personal command called SlideShow:
Here is a short example:
ralmond@Limu:~$ file ~/bin/SlideShow
/home/ralmond/bin/SlideShow: POSIX shell script, ASCII text executable
ralmond@Limu:~$ # Works fine if I execute it from home directory
ralmond@Limu:~$ SlideShow Pictures/
^C [Working as expected]
ralmond@Limu:~$ cd Pictures/
ralmond@Limu:~/Pictures$ #But if I change directory it does not work.
ralmond@Limu:~/Pictures$ SlideShow Pics
bash: ./bin/SlideShow: No such file or directory
ralmond@Limu:~/Pictures$ #If I start the shell in a directory other than home it works
ralmond@Limu:~/Pictures$ bash
ralmond@Limu:~/Pictures$ SlideShow Pics
^C [Working as expected]
I suspect that it is some cache which is not properly getting reset.
Here are my system details:
ralmond@Limu:~/Pictures$ lsb_release -rd
Description: Ubuntu 14.04.1 LTS
Release: 14.04
ralmond@Limu:~/Pictures$ apt-cache policy bash
bash:
Installed: 4.3-7ubuntu1.5
Candidate: 4.3-7ubuntu1.5
Version table:
*** 4.3-7ubuntu1.5 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
4.3-6ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
ralmond@Limu:~/Pictures$ ^C
ralmond@Limu:~/Pictures$
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399948/+subscriptions
References