Bash - увімкніть виконання, лише якщо сценарій запускається з певного каталогу


0

Мені потрібно написати сценарій оболонки, який може бути виконаний, тільки якщо він запускається з домашнього каталогу користувача, який зараз підписаний, і я не знаю, як перевірити це з самого сценарію. Будь-яка допомога буде оцінена.


Погляньте на змінну $0 у вашому сценарії ..
Cyrus

4
if [ $PWD != $HOME ]; then exit; fi
AFH

1
@AFH ви повинні зробити відповідь.
Ayan

Відповіді:


3

Можна використовувати змінні оточення PWD і HOME: $PWD поточний робочий каталог, в той час як $HOME домашній каталог поточного користувача. Ви можете передувати виконувані операції у вашому сценарії:

if [ "$PWD" != "$HOME" ]; then exit; fi

Можна додатково додати код помилки exit команда, у випадку, якщо викликає оболонка хоче перевірити успіх або невдачу сценарію.

Іншою корисною змінною є OLDPWD: $OLDPWD - це попередній каталог перед останньою зміною каталогу. Ви можете скористатися цим, щоб сценарій запускався з будь-якого місця, оточуючи скрипт:

cd "$HOME"
. . . . . .
cd "$OLDPWD"

Це передбачає, що в скрипті немає інших змін у каталозі; якщо ні, використовуйте INITPWD="$PWD" спочатку і повернутися до $INITPWD. Насправді, в більшості випадків скрипт буде виконуватися в дочірній оболонці, тому перехід до початкового каталогу буде непотрібним, оскільки первісний cd не вплине на батьківську оболонку.


0

може бути використано на початку сценарію: LOCATION = / path / to / script if ["PWD"! = "$ LOCATION"]; потім cd $ LOCATION

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.