Why is ./ sometimes needed?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Why is ./ sometimes needed?
# 8  
Old 01-29-2019
To add to already quoted:
Code:
<CR> = The Enter/Return key "  |
                             <-' "
 ./executable[.extension]<CR>
 ^^         ^
 ||         |
 ||         +---> The filename to run and MUST be set to executable, using 'chmod' if necessary.
 |+-------------> The current directory/drawer/folder path seperator.
 +--------------> The __pointer__ to the current directory/drawer/folder.

OR...

 /absolute/path/to/your/executable[.extension]<CR>

OR as in your case:

 executable[.extension]<CR>

From any directory/drawer/folder that is inside the $PATH environment variable.

EDIT:
Even these will work from your current path, but not recommended:
Code:
././executable[.extension]<CR>
AND
./././executable[.extension]<CR>


Last edited by wisecracker; 01-29-2019 at 02:35 PM.. Reason: Added EDIT:
This User Gave Thanks to wisecracker For This Post:
# 9  
Old 01-29-2019
Quote:
Originally Posted by Xubuntu56
error message
Code:
~/bin$ sudo cleanup2
sudo: cleanup2: command not found

I can only emphasize on what RudiC already said: running sudo command is a completely different thing than running command. Basically sudo does:

1) switch to another user acount (by default this is root)
2) execute command as this user
3) switch back.

Of course, a different user can have (and most probably has) a different environment and when you change yours then his is not affected at all. It does not matter what is in your PATH, what matters is what is in roots PATH.

Try sudo echo $PATH and most probably /your/home/bin will not be included in it. If you can change it you could do that although i think it would be a bad idea.

Instead, put a script that should be run by several users (and eventually as root) in /usr/local/bin or in either /usr/local/sbin or /root/bin if it should only be run as root. Put /root/bin or /usr/local/sbin in roots PATH in this case (i suppose /usr/local/bin to be already included there). Then you can use the command you used.

I hope this helps.

bakunin

PS: you probably wonder why it works with ./command. The reason is that the "." for "current directory" is expanded by the shell even before any attempt of executing any command is made. Therefore the shell replaces "." with something like "/path/to/your/home/bin" and only then executes sudo /path/to/your/home/bin/cleanup2 so that the user you switch to doesn't have to have it in its PATH to find it.

bakunin

Last edited by bakunin; 01-29-2019 at 03:04 PM..
These 3 Users Gave Thanks to bakunin For This Post:
# 10  
Old 01-29-2019
To all: thanks for your input!


Today I learned: $PATH is not the same for myself and root.


@Don--I typed Cleanup in the post but I wasn't doing so in the script.
Here is the output of those commands:
Code:
  ~$ od -bc ~/bin/cleanup2 | head -n 10
 0000000 043 041 057 142 151 156 057 142 141 163 150 012 012 012 043 040
           #   !   /   b   i   n   /   b   a   s   h  \n  \n  \n   #    
 0000020 120 162 157 160 145 162 040 150 145 141 144 145 162 040 146 157
           P   r   o   p   e   r       h   e   a   d   e   r       f   o
 0000040 162 040 141 040 102 141 163 150 040 163 143 162 151 160 164 012
           r       a       B   a   s   h       s   c   r   i   p   t  \n
 0000060 043 040 143 154 145 141 156 165 160 062 072 040 151 155 160 162
           #       c   l   e   a   n   u   p   2   :       i   m   p   r
 0000100 157 166 145 144 012 043 040 122 165 156 040 141 163 040 162 157
           o   v   e   d  \n   #       R   u   n       a   s       r   o
------------------------------------------------------------------------
           ~$ od -bc ~/bin/cleanup3 | head -n 10
  0000000 043 041 057 142 151 156 057 142 141 163 150 012 012 012 043 040
           #   !   /   b   i   n   /   b   a   s   h  \n  \n  \n   #    
 0000020 143 154 145 141 156 165 160 063 012 043 040 040 127 141 162 156
           c   l   e   a   n   u   p   3  \n   #           W   a   r   n
 0000040 151 156 147 072 012 043 040 040 055 055 055 055 055 055 055 012
           i   n   g   :  \n   #           -   -   -   -   -   -   -  \n
 0000060 043 040 040 124 150 151 163 040 163 143 162 151 160 164 040 165
           #           T   h   i   s       s   c   r   i   p   t       u
 0000100 163 145 163 040 161 165 151 164 145 040 141 040 156 165 155 142
           s   e   s       q   u   i   t   e       a       n   u   m   b

--- Post updated at 07:52 PM ---

@ RudiC and @bakunin


Thanks to your guidance, I strongly suspect the problem is not having my home directory is root's $PATH.

Cleanup3 was only running because I had placed a copy of it in /usr/local/bin.


Now I just need to figure out how to write bakunin's script!
# 11  
Old 01-29-2019
You presented the solution already. Why don't you put cleanup2 into /usr/local/bin as well?
This User Gave Thanks to RudiC For This Post:
# 12  
Old 01-29-2019
Quote:
Originally Posted by RudiC
You presented the solution already. Why don't you put cleanup2 into /usr/local/bin as well?
Good point, EXCEPT, if you look at the hex-dump of cleanup2 it quotes, "Run as ro[ot]"...
Code:
 0000100 157 166 145 144 012 043 040 122 165 156 040 141 163 040 162 157
           o   v   e   d  \n   #       R   u   n       a   s       r   o

So there must be a reason why it needs to be run as root.
Just an observation.
This User Gave Thanks to wisecracker For This Post:
# 13  
Old 01-29-2019
Chances are that root does run scripts in /usr/local/bin as proven by
Quote:
Originally Posted by Xubuntu56
...
Cleanup3 was only running because I had placed a copy of it in /usr/local/bin.
...
These 2 Users Gave Thanks to RudiC For This Post:
# 14  
Old 01-29-2019
Hi RudiC...

Yes but Cleanup3 does not run as root and could be anywhere.
However maybe Cleanup2 has to be in more secure location so that any 'Tom, Dick or Harry' can't execute it unless they have root access.
Maybe it is 'critical', term used loosely, to the correct 'cleanup' method. It would be interesting to know the access rights of Cleanup2.
This was my point, perhaps I am being too pedantic here...

(Anyhow, I am rigged for silent running on this thread now.)

Bazza.
This User Gave Thanks to wisecracker For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help needed

First of all, let me state that I am a windows admin. I have a windows share mounted to /mnt/server I need a script that will either login as sudo or perform commands with sudo rights. I need the script to copy all of the users /home folders to the mounted windows share. Now If I can... (2 Replies)
Discussion started by: EricM
2 Replies

2. Shell Programming and Scripting

Help Needed

please reply for this https://www.unix.com/shell-programming-scripting/111493-cutting-lines.html its really urgent (1 Reply)
Discussion started by: jojo123
1 Replies

3. Shell Programming and Scripting

help needed...

Guys, There is a file where there are 1000s of records. In the file if some condition satisfies in a certain TAB record (TAB would be first 3 digits of a certain record) then move TAB and all the records (or lines) after TAB to new_file, until another TAB record is encountered in the same... (1 Reply)
Discussion started by: Prat007
1 Replies

4. Shell Programming and Scripting

Help needed ....

Hi... I have a folder /home/data ;where some files are present. aaa_asas.txt bbb_xxx.txt ccc_xsxas.txt ddd_sa2esa.txt ------ Also I have a file which is as follows.(/home/file1) cat /home/file1 aaa you bbb are ccc very ddd good -------- now I want to rename all the files in the folder... (7 Replies)
Discussion started by: newbee1
7 Replies

5. UNIX for Dummies Questions & Answers

Help needed please.

i've been given an assignment to Write a system utility called recycle that satisfies the following requirements as they might be displayed in a UNIX/Linux man page: NAME recycle - stores files in a recycle bin SYNOPSIS recycle ... DESCRIPTION Recycle is a replacement for the... (3 Replies)
Discussion started by: jerryboy78
3 Replies

6. UNIX for Dummies Questions & Answers

little help needed..

hi everyone i'm a noob trying to learn unix language.. but seems like i got no leads on how to start.. i'm playing with the 'ps' command.. i'm trying to show the pid, ppid, username, command, cpu utilization (in desc order), process start time and process status.. all in a command.. am i able... (3 Replies)
Discussion started by: hilofat
3 Replies

7. AIX

Little help needed.

Hello, I am quite new to AIX, but have Linux experience. Iam facing a peoblem with AIX 5.2 running on a 43p Model 150 (RS6000). I tried everyting and i cant have the network to run properly. :confused: /etc/hosts looks like this: 127.0.0.1 loopback localhost 192.168.XXX.XXX... (5 Replies)
Discussion started by: Netghost
5 Replies

8. UNIX for Dummies Questions & Answers

Help needed

HI can any one help me with the appropriate answers for the below: 1.Enter an # before a command and press .what do you see,and how do you think you can take advantage of the behaviour? 2.Is tar -cvfb20foo.tar*.c legitimate or not.will this command work without the - symbol? 3.The command... (1 Reply)
Discussion started by: akhil1460
1 Replies

9. UNIX for Dummies Questions & Answers

Help needed

Hello I am a newbie and want to learn unix . Does unix and linux are one and same. I have red hat linux cd but i want to take advice from some one wheather unix and linux are same. If not ,where i'll get a Unix os setup and how i'll install it. If linux would do then how should... (3 Replies)
Discussion started by: hunter87
3 Replies

10. Shell Programming and Scripting

Help is needed

Hi I'm trying to print a directories struct tree that will look like this: A _a _b _B __c __d __C ___e B _a _b I'm doing a recursion, but how can I know how much space is needed before printing after the recursion? (3 Replies)
Discussion started by: abcde
3 Replies
Login or Register to Ask a Question