Выполнение двухэтапной -команды с использованием горячей клавиши

Технически все работает так, как должно быть. Когда вы бежите

./foo.sh

Вы запускаете программу foo.sh (С помощью shebang)

Но когда ты бежишь

bash foo.sh

технически вы используете программу bash (/bin/bash или /usr/bin/bash ).

Если вы беспокоитесь о безопасности. Представьте, что пользователь имеет доступ для чтения foo.shи копирует содержимое foo.sh в bar.sh, которое у него есть execute access. Таким образом, во всех случаях, если пользователь может читать .shфайлы, он может легко их выполнить.

1
13.09.2020, 22:32
1 ответ

Попробуйте открыть терминал и нажмите

gnome-terminal --help-all

что намекает вам (среди прочего )на опцию -e:

Terminal options; if used before the first --window or --tab argument, sets the default for all terminals: -e, --command Execute the argument to this option inside the terminal

что полностью вводит в заблуждение :(, потому что если вы сделаете это, вы получите:

Option “-e” is deprecated and might be removed in a later version of gnome-terminal. Use “-- ” to terminate the options and put the command line to execute after it.

Итак, перечитав это дважды, задаваясь вопросом, почему это не работает, и понимая, что если ваша команда завершает работу, терминал также отключается, а затем усиливая свой «эхо-тест» с помощью «exec bash», у вас есть хороший ответ для unix..stackexchange.com.. или вы на это надеетесь:)

gnome-terminal --window -- /bin/sh -c "echo This line is opening a gnome-terminal, running a command in it and then handing over to bash;exec bash"

И с

gnome-terminal --window -- /bin/sh -c "jupyter notebook"

в качестве команды я смог запустить блокнот Jupyter на Fedora 31 с помощью специальной комбинации клавиш.

0
18.03.2021, 23:05

Теги

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