当我进入运行Hardy 8.04的ubuntu-box时,我的.bashrc中的环境变量没有设置.
如果我做一个源.bashrc,变量是正确设置的,一切都很好.
为什么.bashrc不会在登录时运行?
我似乎无法设置一个新的$ PATH,以便在执行命令时使用它ssh user@host command.我已经尝试export PATH=$PATH:$HOME/new_path在远程机器上添加〜/ .bashrc和〜/ .profile,但是执行ssh user@host "echo \$PATH"表明没有获取更改(它显示/ usr/local/sbin:/ usr/local/bin:/ usr/sbin目录:在/ usr/bin中:/ sbin目录:/ bin中:在/ usr /游戏).远程计算机正在运行Ubuntu 8.04.
我确信我可以将其破解到/ etc/profile中,但这不是一个干净的解决方案,只有在具有root访问权限时才有效.
我试图在非交互式bash shell中使用别名.我已经定义了我的别名~/.bashrc,我已经设置了变量BASH_ENV=~/startUpFile.startUpFile的内容是source ~/.bashrc.
当我执行alias命令时,我可以看到我的别名被识别.但是,如果我尝试使用定义的别名~/.bashrc,Bash无法识别它.它给了我未知的命令错误.
使用TCSH shell可以很容易地执行此操作,因为~/.cshrc始终会读取文件.
有什么想法我怎么能用Bash shell做到这一点?
我无法让expand_aliases在bash中生效.我尝试了很多不同的东西,没有任何作用.
这是简单的测试用例:
/bin/bash -c 'shopt -s expand_aliases; alias cdtmp="cd /tmp"; alias; cdtmp; pwd;'
Run Code Online (Sandbox Code Playgroud)
并输出:
$ /bin/bash -c 'shopt -s expand_aliases; alias cdtmp="cd /tmp"; alias; cdtmp; pwd;'
alias cdtmp='cd /tmp'
/bin/bash: cdtmp: command not found
/home/user
$ /bin/bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
(是的,我正在使用shopt而不是-O选项进行bash,只是为了证明它正在完成.)
有任何想法吗?
我正在尝试执行远程服务器上的脚本。该脚本激活虚拟环境,然后执行一些命令。现在我想直接从我的 mac 终端执行这个脚本。这是脚本的内容
cd ~/workdir/
workon myvirtualenv
source ~/prodStuff/envVars
git pull origin master
supervisorctl -u admin -p password restart gunicorn
supervisorctl -u admin -p password status
deactivate
Run Code Online (Sandbox Code Playgroud)
当我登录服务器并执行它时,该脚本运行良好。但是当我尝试从 mac 终端执行相同的操作时,它给出了以下错误
/home/ubuntu/scripts/deploy_code.sh: line 2: workon: command not found
Run Code Online (Sandbox Code Playgroud)
所以本质上,我无法切换到虚拟环境。这是我用来从终端执行脚本的命令
ssh prodserver ". /home/ubuntu/scripts/deploy_code.sh"
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我解决这个问题,我将不胜感激。
谢谢