Go Back   The macosxhints Forums > OS X Help Requests > UNIX - Newcomers



Reply
 
Thread Tools Rate Thread Display Modes
Old 09-30-2002, 08:49 PM   #1
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
Question executables not found in path

I am using tchs
Let's say my user name is johndoe
I have in my .login the following:

setenv PATH "~/bin:/usr/local/bin:$PATH"
----

When I issue the command:
echo $PATH

I get:

/Users/johndoe/bin:usr/local/bin:/bin:/sbin/usr/bin:usr/sbin

---

I put an executable (call it xyzcommand) in my ~/bin directory.

while I'm in my ~/ directory (or any other directory that's NOT ~/bin) I type the xyzcommand and I'm told xyzcommand cannot be found.

if I type ~/bin/xyzcommand it works fine.

the directory IS IN THE PATH yet the commands in that directory are not found.

any clues?
windlaser is offline   Reply With Quote
Old 09-30-2002, 09:07 PM   #2
houchin
Major Leaguer
 
Join Date: Jan 2002
Location: Northern Virginai
Posts: 294
tcsh does some kind of caching of the names of executables. I assume that this makes it faster to get to stuff.

If you give it a commandname without a path (like "xyzcommand"), it looks in its cache to determine where the actual file is. If you give it a command with a path (partial or full) (like "~/bin/xyzcommand" or "./xyzcommand") it just goes and runs the specified file.

To get tcsh to rescan your path directories for new commands, type "rehash"
houchin is offline   Reply With Quote
Old 09-30-2002, 09:12 PM   #3
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
Thanks for the quick reply. I had already tried the rehash command. Still no good. It's very strange.
windlaser is offline   Reply With Quote
Old 09-30-2002, 09:14 PM   #4
houchin
Major Leaguer
 
Join Date: Jan 2002
Location: Northern Virginai
Posts: 294
Are you sure the executable has execute permissions?
houchin is offline   Reply With Quote
Old 09-30-2002, 09:20 PM   #5
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
Yup, checked that. It has x in all.

To be sure, I copied the command to the /usr/local/bin directory, executed rehash, and the executable executed from anywhere.

I did a 'which xyzcommand' to see which one it was executing: it was executing the /usr/local/bin one.

I deleted the one in /usr/local/bin and tried again. Nothing. It doesn't see it.
windlaser is offline   Reply With Quote
Old 09-30-2002, 09:23 PM   #6
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
Now this is interesting. I tried it from a bash shell and it worked fine. The plot thickens...
windlaser is offline   Reply With Quote
Old 09-30-2002, 10:30 PM   #7
mervTormel
League Commissioner
 
Join Date: Jan 2002
Posts: 5,536
sheesh!

why all the trickery with the real name hiding? why not copy pertinent input and output results directly from the shell? if you had done that, this thread may be only two posts long!

if you're going to hand craft the symptoms here, well, then all bets are off for analyzing your issues. it's not that i don't trust you; it's that i don't trust you.

remove your command from /usr/local/bin/

show us:

% echo $PATH

% ls -l ~/bin/commandname

% which commandname

c'mon!
__________________
On a clear disk, you can seek forever.
mervTormel is offline   Reply With Quote
Old 09-30-2002, 11:00 PM   #8
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
As ORDERED:

[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $PATH
/Users/mikewhitlaw/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[Mike-Whitlaws-Computer:~] mikewhitlaw% ls -l ~/bin
total 8
-rwxr-xr-x 1 mikewhit staff 41 Sep 30 22:58 tester
[Mike-Whitlaws-Computer:~] mikewhitlaw% which tester
tester: Command not found.
[Mike-Whitlaws-Computer:~] mikewhitlaw% ~/bin/tester
Why can't I be seen?
[Mike-Whitlaws-Computer:~] mikewhitlaw% cat ~/bin/tester
#!/bin/bash
echo "Why can't I be seen?"

[Mike-Whitlaws-Computer:~] mikewhitlaw%

Last edited by windlaser; 09-30-2002 at 11:04 PM.
windlaser is offline   Reply With Quote
Old 09-30-2002, 11:41 PM   #9
hayne
Site Admin
 
Join Date: Jan 2002
Location: Montreal
Posts: 32,473
more things to check

Three things to check (and report back here):
1)
To confirm what shell you are using, please do:
echo $SHELL

2)
You've shown us that /Users/mikewhitlaw/bin is in your path.
You've shown us that the 'tester' script is in the directory ~/bin
But you haven't shown us that ~/bin is /Users/mikewhitlaw/bin
How about doing:
echo ~/bin

3)
You've shown us that 'which tester' doesn't find it.
But which version of 'which' are you using?
Try doing:
which which
And please also show us what you get when you just try to execute the 'tester' program from the shell. I.e. show us the result of doing the following command:
tester
hayne is offline   Reply With Quote
Old 09-30-2002, 11:49 PM   #10
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $SHELL
/bin/tcsh
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo ~/bin
/Users/mikewhitlaw/bin
[Mike-Whitlaws-Computer:~] mikewhitlaw% which which
which: shell built-in command.
[Mike-Whitlaws-Computer:~] mikewhitlaw% tester
tester: Command not found.
[Mike-Whitlaws-Computer:~] mikewhitlaw% ~/bin/tester
Why can't I be seen?
[Mike-Whitlaws-Computer:~] mikewhitlaw%
windlaser is offline   Reply With Quote
Old 10-01-2002, 12:11 AM   #11
hayne
Site Admin
 
Join Date: Jan 2002
Location: Montreal
Posts: 32,473
one more thing

Okay, one more thing and then I'm going to give up.
Please show us the result of:
ls -ld ~/bin

Last edited by hayne; 10-01-2002 at 02:43 AM.
hayne is offline   Reply With Quote
Old 10-01-2002, 12:15 AM   #12
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
[Mike-Whitlaws-Computer:~] mikewhitlaw% ls -ld ~/bin
drwxr-xr-x 5 mikewhit staff 170 Sep 30 23:22 /Users/mikewhitlaw/bin
[Mike-Whitlaws-Computer:~] mikewhitlaw%
windlaser is offline   Reply With Quote
Old 10-01-2002, 02:16 AM   #13
mervTormel
League Commissioner
 
Join Date: Jan 2002
Posts: 5,536
well, raise my rent!

re: ORDERED - it was a suggestion, and speculative. it's difficult to gauge user skill levels.

regardless, it is a quandry. i'm stumped. i'd need access to diagnose.

show us:
Code:
% ls -ld /Users /Users/mikewhitlaw

% id
mervTormel is offline   Reply With Quote
Old 10-01-2002, 02:53 AM   #14
hayne
Site Admin
 
Join Date: Jan 2002
Location: Montreal
Posts: 32,473
try to reproduce it

Can you reproduce this mysterious behaviour with:
1) a differently named copy of your 'tester' script ? E.g. cp tester foo
2) an executable which is not a shell script ? E.g. copy /bin/ls to ~/bin
3) some other directory than ~/bin ? E.g. make a directory ~/bin2 and try it there.
hayne is offline   Reply With Quote
Old 10-01-2002, 08:02 AM   #15
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
Mike-Whitlaws-Computer:~] mikewhitlaw% echo $SHELL
/bin/tcsh
[Mike-Whitlaws-Computer:~] mikewhitlaw% which ls
/bin/ls
[Mike-Whitlaws-Computer:~] mikewhitlaw% mkdir bin2
[Mike-Whitlaws-Computer:~] mikewhitlaw% cp /bin/ls /bin2
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $PATH
/Users/mikewhitlaw/bin2:~/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[Mike-Whitlaws-Computer:~] mikewhitlaw% which ls
/bin/ls
[Mike-Whitlaws-Computer:~] mikewhitlaw%

---
I changed my default shell to /bin/bash, and I can now execute the script but check out the 'which' call. What the heck is going on?
---


[~]$ echo $SHELL
/bin/bash
[~]$ echo $PATH
~/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[~]$ echo ~/bin
/Users/mikewhitlaw/bin
[~]$ ls ~/bin
tester
[~]$ which tester
no tester in ~/bin /usr/local/bin /bin /sbin /usr/bin /usr/sbin
[~]$ tester
Why can't I be seen?
[~]$ tcsh
[Mike-Whitlaws-Computer:~] mikewhitlaw% which tester
tester: Command not found.
[Mike-Whitlaws-Computer:~] mikewhitlaw% tester
tester: Command not found.
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $PATH
/Users/mikewhitlaw/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[Mike-Whitlaws-Computer:~] mikewhitlaw% exit
exit
[~]$ tester
Why can't I be seen?
[~]$ which tester
no tester in ~/bin /usr/local/bin /bin /sbin /usr/bin /usr/sbin
[~]$

????
windlaser is offline   Reply With Quote
Old 10-01-2002, 11:42 AM   #16
mervTormel
League Commissioner
 
Join Date: Jan 2002
Posts: 5,536
Quote:
check out the 'which' call. What the heck is going on?

which is a tcsh builtin, but for bash, which is a C shell script
Code:
$ which which
/usr/bin/which

$ file `which which`
/usr/bin/which: C shell script text
show us, from tcsh
Code:
% sw_vers

ProductName:    Mac OS X
ProductVersion: 10.2.1
BuildVersion:   6D52

% echo $version

tcsh 6.10.00 (Astron) 2000-11-19 (powerpc-apple-darwin) options
 8b,nls,dl,al,sm,rh,color
and, for cripes sake, name your host something reasonable
__________________
On a clear disk, you can seek forever.
mervTormel is offline   Reply With Quote
Old 10-01-2002, 02:57 PM   #17
hayne
Site Admin
 
Join Date: Jan 2002
Location: Montreal
Posts: 32,473
bin2

Quote:
windlaser wrote:
[Mike-Whitlaws-Computer:~] mikewhitlaw% mkdir bin2
[Mike-Whitlaws-Computer:~] mikewhitlaw% cp /bin/ls /bin2

What's going on?
You were supposed to be copy & pasting your results directly from the Terminal.
But the above seems to show that you aren't doing that.
Note the slash in front of bin2 in the 'cp' line. You apparently copied the file to the directory /bin2 which is a subdirectory of /. Yet no such directory exists (usually) and you had created the bin2 directory in your home directory if we believe your prompt.
So I guess we shouldn't believe your prompt. It seems that it does not correctly reflect your current directory. Please preface all further results by showing us the results of 'pwd'.
And for now, please show us just where this bin2 directory is.
hayne is offline   Reply With Quote
Old 10-01-2002, 03:06 PM   #18
mervTormel
League Commissioner
 
Join Date: Jan 2002
Posts: 5,536
Quote:
What's going on?

yeah, this has become unsupportable. should we suspect a troll? are we being spoofed? i can no longer look.
__________________
On a clear disk, you can seek forever.
mervTormel is offline   Reply With Quote
Old 10-01-2002, 09:05 PM   #19
windlaser
Prospect
 
Join Date: Sep 2002
Posts: 11
yes, I had to edit out a couple of little mistakes. Looks like I messed up the edit a little. I apologiize. I AM NOT SPOOFING you. I have never seen anything like this before. I mean, why does it work in bash (sort of) and not tcsh. NO ONE has ever seen this before? Is there some kind of privlege setting? What could possibly do this?

Here I'll do what you asked again, no edits (and a few mistakes), I promise:

[Mike-Whitlaws-Computer:~] mikewhitlaw% pwd
/Users/mikewhitlaw
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $SHELL
/bin/tcsh
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $PATH
/Users/mikewhitlaw/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[Mike-Whitlaws-Computer:~] mikewhitlaw% setenv PATH (~/bin2:$PATH)
Badly placed ()'s.
[Mike-Whitlaws-Computer:~] mikewhitlaw% setenv PATH "~/bin2:$PATH"
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $PATH
/Users/mikewhitlaw/bin2:~/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
[Mike-Whitlaws-Computer:~] mikewhitlaw% ls bin2
ls
[Mike-Whitlaws-Computer:~] mikewhitlaw% which ls
/bin/ls
[Mike-Whitlaws-Computer:~] mikewhitlaw% ls
Apps Incomplete Music bin
Desktop Library Pictures bin2
Documents LimeWireShared Public java
HelloThere Movies Sites perltest
[Mike-Whitlaws-Computer:~] mikewhitlaw% bash
bash-2.05a$ echo $PATH
~/bin2:~/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin=
bash-2.05a$ which ls
/bin/ls
bash-2.05a$ ls
Apps Incomplete Music bin
Desktop Library Pictures bin2
Documents LimeWireShared Public java
HelloThere Movies Sites perltest
bash-2.05a$ ls bin
ccrypt tester
bash-2.05a$ tester
Why can't I be seen?
bash-2.05a$ which tester
no tester in ~/bin2 ~/bin /usr/local/bin /bin /sbin /usr/bin /usr/sbin=
bash-2.05a$ cat bin/tester
#!/bin/bash
echo "Why can't I be seen?"

bash-2.05a$ exit
exit
[Mike-Whitlaws-Computer:~] mikewhitlaw% sw_vers
ProductName: Mac OS X
ProductVersion: 10.2.1
BuildVersion: 6D52
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo %version
%version
[Mike-Whitlaws-Computer:~] mikewhitlaw% echo $version
tcsh 6.10.00 (Astron) 2000-11-19 (powerpc-apple-darwin) options 8b,nls,dl,al,sm,rh,color
[Mike-Whitlaws-Computer:~] mikewhitlaw%

---

bottom line. this is messed up, and by the way, this is the installation right out of the box. Oh, and mervTormel, I couldn't agree with you more about the name, how do I rename the host? Forgive my ignorance, but this IS the beginners forum.
windlaser is offline   Reply With Quote
Old 10-01-2002, 09:28 PM   #20
mervTormel
League Commissioner
 
Join Date: Jan 2002
Posts: 5,536
Quote:
...how do I rename the host? Forgive my ignorance, but this IS the beginners forum.

so it is. and you're doing quite well, actually.

name your rig:

system preferences [ Sharing ] pane:

computer name: [ catbox ]

rendezvous name: [ catbox ]

----------------

re: your dang-puzzling tcsh shell path defiance type thingy, durndest thing i've seen today. would you consider allowing someone to remote connect to diagnose? i'd like to know what the poop is going on.
mervTormel is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



All times are GMT -5. The time now is 06:16 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Site design © IDG Consumer & SMB; individuals retain copyright of their postings
but consent to the possible use of their material in other areas of IDG Consumer & SMB.