Использовать команды в каталоге только для интерактивного использования?

Использовать команды в каталоге только для интерактивного использования?

У меня есть bin/под $HOME. Он содержит некоторые дополненные версии общих команд. Поэтому я не хочу, чтобы эти команды использовались скриптами, а только в интерактивном использовании.

Лучшее, что я могу сделать, это добавить

for f in ~/bin/*
do
    alias "$(basename $f)"="$f"
done

на мой ~/.bash_profile? Или есть другое решение?

решение1

Вы также можете добавить следующие строки в свой файл .bashrc, который устанавливает , только PATHесли вы находитесь в интерактивной оболочке.

if [ "$PS1" ]
then
    export PATH=~/bin:$PATH
fi

решение2

Вы можете использовать модули окружения, чтобы вручную включить (загрузить) модуль, устанавливающий нужный путь.

module load homebin

Как будет выглядеть модуль Homebin

#%Module1.0
prepend-path PATH ~/bin

http://modules.sourceforge.net

решение3

Это зависит от того, какую оболочку и (к сожалению) какую систему вы используете. Bash, например, использует разные файлы запуска в зависимости от того, используется ли он как интерактивная или неинтерактивная оболочка, как объясняется вруководство по bash.

В принципе, вы должны иметь возможность добавлять export PATH=$HOME/bin:$PATHв свой ~/.bashrcфайл, который затем будет выполняться только для интерактивных оболочек без входа в систему. На практике некоторые системы настроены таким образом, что они читают ~/.bashrcтакже и для неинтерактивных оболочек.

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

Связанный контент