Я нашел способ. Я взял его с какого-то сайта stackexchange, но не могу найти его обратно.
В любом случае: Вы можете злоупотреблять опцией bash --init-file
. Она предназначена для отмены использования другого стартового скрипта вместо .bashrc, но вы можете поместить туда что угодно. В сочетании с анонимными трубами вы можете сделать примерно следующее:
bash --init-file <(echo "your --command --here")
После завершения команды вы будете возвращены в bash - не в новый экземпляр bash, как в некоторых других решениях, а в тот же самый экземпляр.
Конечно, при этом будет пропущен .bashrc, потому что именно для этого предназначен --init-file
. Чтобы исправить это, вы получите потрясающе красивый
bash --init-file <(echo ". \"$HOME/.bashrc\"; your --command --here")
Уродливый, но он работает :-)
О подсистеме Windows для Linux
Наконец, я попробовал сделать это из Windows, но попал в беду, потому что когда вы запускаете bash
, чтобы вызвать подсистему Windows для Linux, вы все еще находитесь в стране Windows, поэтому анонимные трубы не будут работать, $HOME будет неправильным, и так далее. Моим обходным решением для "cmd /k, но для запуска подсистемы windows для linux" стало:
bash -c 'exec bash --init-file ^<(echo ". \"$HOME/.bashrc\"; your --command --here")'
Обратите внимание на ^
, чтобы убрать символ <
. Это запустит bash (bash -c
), немедленно заменит текущий процесс bash на новый (exec
), который также является процессом bash, теперь инициализированным, как обсуждалось ранее, из "Linux land".
Я сделал пакетный файл под названием bash-k.cmd
в моем PATH, чтобы я мог легко вызвать его, с этим внутри:
@bash -c 'exec bash --init-file ^<(echo ". \"$HOME/.bashrc\"; %*")'
Это позволяет мне сделать bash-k cowsay hello
и все будет работать
Это происходило со мной даже в других программах, таких как uGet, загрузчик, который также имеет параметр "открыть содержащий папка".
Проблема, как указано здесь , запускается определенными программами.
Лучшее решение - создать или отредактировать ~ / .local / share / applications / mimeapps.list
: отредактируйте строку, которая начинается с inode / directory =
, и добавьте имя используемого файлового менеджера, если его еще нет; если это уже есть, но другая программа указана там первой, сначала поместите файловый менеджер (если вам нужны другие программы для открытия папок).
Для файлов Pantheon это должно быть похоже на
[Default Applications]
inode/directory=org.pantheon.files.desktop;
. Если среда рабочего стола несовместима с freedesktop, как мой Manjaro Cinnamon, создаваемый / редактируемый файл должен быть ~ / .local / share / applications / mimeinfo. cache
вот так:
[MIME Cache]
inode/directory=org.pantheon.files.desktop;
Вы должны публиковать вопросы по elementaryOS на собственном сайте stackexchange: https://elementaryos.stackexchange.com/