Usar comandos no diretório apenas para uso interativo?

Usar comandos no diretório apenas para uso interativo?

Eu tenho um bin/abaixo $HOME. Contém algumas versões aumentadas de comandos comuns. Portanto, não quero que esses comandos sejam usados ​​por scripts, mas apenas para uso interativo.

É o melhor que posso fazer para adicionar

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

para o meu ~/.bash_profile? Ou há outra solução?

Responder1

Você também pode adicionar as linhas a seguir ao seu .bashrc, que só define PATHse você estiver em um shell interativo.

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

Responder2

Você pode usar módulos de ambiente para habilitar (carregar) manualmente um módulo definindo o caminho desejado

module load homebin

Como seria o módulo homebin

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

http://modules.sourceforge.net

Responder3

Depende de qual shell e (infelizmente) de qual sistema você está usando. O Bash, por exemplo, usa diferentes arquivos de inicialização dependendo se é usado como um shell interativo ou não interativo, conforme explicado nomanual do bash.

Em princípio, você deve ser capaz de adicionar export PATH=$HOME/bin:$PATHao seu ~/.bashrcarquivo, que será executado apenas para shells interativos sem login. Na prática, alguns sistemas são configurados de forma que ~/.bashrctambém leiam shells não interativos.

Perguntas relacionadas:

informação relacionada