Как я могу выполнять родственные сценарии вне каталога? [закрыто]

$ ls -l
bin/
$ ls bin/
startup.sh shutdown.sh

Я написал сценарий под названием restart.sh внутри bin / , который выглядит как

#!/bin/sh
sh ./shutdown.sh
sh ./startup.sh

Теперь каталог bin / выглядит так.

$ ls -l bin/
startup.sh shutdown.sh restart.sh

Когда я выполняю restart.sh внутри bin / , он работает.

Когда я выполняю restart.sh вне bin / , этого не происходит.

$ ls
bin/
$ ./bin/restart.sh
sh: ./shutdown.sh: No such file or directory
sh: ./startup.sh: No such file or directory
$ cd bin
$ ./restart.sh
I'm happy...

Как я могу заставить это работать?

Почему голоса против? Это нормально?

ОБНОВЛЕНИЕ

Я ценю и комментарии, и ответы. Я уже знаю, что . означает в системе. Приношу свои извинения за то, что сбил людей с толку. Я принял ответ, потому что именно в этом контексте следует понимать мой вопрос. Я должен был спросить у некоторых вроде Как я могу сделать сценарий оболочки известным по его пути? ..

Я даю свой ответ для кого-то другого. Существует множество результатов поиска для определения фактического положения в сценариях оболочки. Я нашел его в Как сценарий BASH может найти свое собственное местоположение .

#!/bin/sh
wd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $wd
sh $wd/shutdown.sh
sh $wd/startup.sh
-3
задан 18 November 2014 в 09:39
1 ответ

Kiedy wpiszesz ./ nazwa_skryptu.sh ./ mówi „szukaj tylko w tym folderze nazwy_skryptu.sh”.

I robisz to w folderze, w którym nazwa_skryptu.sh nie istnieje, więc powłoka zwraca „Nie ma takiego pliku lub katalogu”.

Fakt, że skrypt restart.sh wywołuje w Twoim imieniu plik ./shutdown.sh nie ma znaczenia, nadal jesteś w folderze, w którym nie istnieje plik shutdown.sh , więc powłoka tak es go nie znajduje.

Albo musisz dodać swój katalog do $ PATH (zmienna środowiskowa zawierająca listę folderów, które powłoka zawsze przeszukuje, np. export PATH = $ PATH: / home / me / bin (nie przetrwa ponownego uruchomienia))lub musisz zmienić skrypt, aby wywołać /home/me/bin/shutdown.sh lub potrzebujesz skryptu na cd / home / me / bin / i zadzwonić pod numer ./shutdown.sh.

1
ответ дан 5 December 2019 в 22:00

Теги

Похожие вопросы