1

I have a bash script named Script.sh . It worked well when it was in my /home directory.I moved it to my /bin directory,for running it as command. At first it worked well(as a command, in my /bin), but after restarting, it stopped working. When I type Script.sh , in terminal, nothing happens and I have to use Ctrl+C for getting the terminal to work again. When my Script.sh is in my /bin, my spd-say command doesn't work either(it does not pronounce the argument when I use it in terminal). After moving the script from /bin, everything gets corrected. Is there any problem, moving a file to /bin?

$ echo $PATH
:/home/m/bin:/home/m/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

This is the first part of the script.

#!/bin/bash
spd-say -w "Do you know this man?"
xdg-open $(locate "X.jpg")
read a
if [ "$a" == "yes" ]
then
spd-say -w "Call the police."
else
spd-say -w "Thanks."
fi
  • 1
    @Unbesiegbarkeit Is the script expecting some sort of input ? Does it operate on files where it's stored ? If possible, provide a minimal example of what it's supposed to do – Sergiy Kolodyazhnyy Jun 05 '18 at 15:44
  • 1
    In my /home directory it works, even in /bin it worked at first, but I don't know what has happened. –  Jun 05 '18 at 16:00
  • Are you saying that calling spd-say from the command line didn’t work when you had Script.sh in /bin/? – dessert Jun 05 '18 at 16:07
  • 1
    spd-say is most likely broken and stuck in an endless loop. Out of curiosity why test for "Yes" and not "Qui" instead? – WinEunuuchs2Unix Jun 05 '18 at 17:46
  • 1
    You mean 'oui'? The script was in french and I modified it for sending it to the site. Then I found that all script is in french( the --language option,etc..). So I put it in french again and I forgot to change that part. –  Jun 05 '18 at 17:52
  • 1
    @WinEunuuchs2Unix And what to do for fixing it? I mean is there any way to put the script in /bin without having that probleme? –  Jun 05 '18 at 17:55
  • 1
    Your PATH has an empty entry at the start (before the first colon :). Maybe that's related? – wjandrea Jun 05 '18 at 18:09
  • 2
    This would be easier to troubleshoot with an MCVE – wjandrea Jun 05 '18 at 18:11
  • When you say you moved the script to /bin/, did you mean you moved it to ~/bin/? There is a big difference. The script should be in /home/$USER/bin/, not /bin/. – user68186 Jun 05 '18 at 19:03
  • 1
    By doing ls -a | grep bin nothing shows up in my PC and I don't see such file there in my /home directory. Anyway, what happens if I put it in /bin ? (The bin in my root directory I mean.) The same directory where commands like ls are there? –  Jun 05 '18 at 19:16
  • When your script hangs in /bin, can you open up another terminal and enter pgrep spd-say? Does it return a pid? – muclux Jun 07 '18 at 17:35
  • no, spd-say does not work in any terminal. Anyway I forgot putting the script there. Thanx. –  Jun 07 '18 at 17:43

1 Answers1

3

I have not enough reputation to make a comment, but it seems to me that you need to put your script in /usr/local/bin.

From man hier(7)

/bin
    This  directory contains executable programs which are needed in 
    single user mode and to bring the system up or repair it.

/usr/local/bin Binaries for programs local to the site.

You know, copy with sudo cp and check the permissions.

But if you want to use the program just for yourself, put in on /home/$USER/bin folder.

Also, you can make a symlink from your script to a path in /usr/local/bin

ln -s /full/path/to/your-script.sh /usr/local/bin/<empty or optional name>
Cuauhtli
  • 201